mybatisplus 一对多配置

1:数据库表

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `t_user_id` bigint(255) NOT NULL AUTO_INCREMENT,
  `t_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `t_user_age` smallint(255) NULL DEFAULT NULL,
  PRIMARY KEY (`t_user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for t_user_address
-- ----------------------------
DROP TABLE IF EXISTS `t_user_address`;
CREATE TABLE `t_user_address`  (
  `t_address_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `t_user_id` bigint(255) NULL DEFAULT NULL,
  `t_address_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`t_address_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

2:实体类

(1)User

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "t_user_id", type = IdType.AUTO)
    private Long tUserId;

    private String tUserName;

    private Integer tUserAge;

    @TableField(exist = false)//表示该属性不为数据库表字段,但又是必须使用的
    private List<Address> userAddressList;
}

(2)Address

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_user_address")
public class Address {
    private static final long serialVersionUID = 1L;

    @TableId(value = "t_address_id", type = IdType.AUTO)
    private Long tAddressId;

    private String tUserId;

    private String tAddressDesc;
}

3:Mapper

(1)UserMapper

public interface UserMapper extends BaseMapper<User> {
    List<User> getUserList(Page<User> page);
}

(2)UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzh.springbootmp.mapper.UserMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.wzh.springbootmp.entity.User">
        <id column="t_user_id" property="tUserId" />
        <result column="t_user_name" property="tUserName" />
        <result column="t_user_age" property="tUserAge" />

        <collection property="userAddressList" column="{t_user_id=t_user_id}" select="getUserAddressById"/>
    </resultMap>

    <!--根据userID查询地址信息-->
    <select id="getUserAddressById" resultType="com.wzh.springbootmp.entity.Address">
        select t_user_id,t_address_id,t_address_desc
        from t_user_address
        where t_user_id=#{t_user_id}
    </select>

    <!--获取用户列表信息-->
    <select id="getUserList" resultMap="BaseResultMap">
        select t_user_id,t_user_name,t_user_age
        from t_user
    </select>
</mapper>

4:Service

(1)IUserService

public interface IUserService extends IService<User> {
    Page<User> getUserList(Page<User> page);
}

(2)UserServiceImpl

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

    @Override
    public Page<User> getUserList(Page<User> page) {
        return page.setRecords(this.baseMapper.getUserList(page));
    }
}

5:UserController

@RestController
@AllArgsConstructor
public class UserController {

    private IUserService userService;

    @GetMapping("/users/{page}/{size}")
    public Map<String,Object> getUserList(@PathVariable Integer page, @PathVariable Integer size){
        Map<String, Object> map = new HashMap<>();

        Page<User> pageUser = new Page<>(page, size);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        IPage<User> pages = userService.page(pageUser, queryWrapper);

        if (pages.getRecords().size() == 0) {
            map.put("code", -1);
        } else {
            map.put("code", 1);
            map.put("data", pages);
        }
        return map;
    }

    @GetMapping("/userAddressList/{page}/{size}")
    public Map<String, Object> getUserAddressList(@PathVariable Integer page, @PathVariable Integer size) {
        Map<String, Object> map = new HashMap<>();
        Page<User> userAddressPage = userService.getUserList(new Page<>(page, size));

        if (userAddressPage.getRecords().size() == 0) {
            map.put("code", 1);
        } else {
            map.put("code", 0);
            map.put("data", userAddressPage);
        }

        return map;
    }

}

6:测试结果

{
  "code": 0,
  "data": {
    "records": [
      {
        "userAddressList": [
          {
            "taddressDesc": "徐州路",
            "taddressId": 1,
            "tuserId": "1"
          },
          {
            "taddressDesc": "东莞路",
            "taddressId": 2,
            "tuserId": "1"
          }
        ],
        "tuserAge": 20,
        "tuserId": 1,
        "tuserName": "张三"
      },
      {
        "userAddressList": [
          {
            "taddressDesc": "抚顺路",
            "taddressId": 3,
            "tuserId": "2"
          }
        ],
        "tuserAge": 30,
        "tuserId": 2,
        "tuserName": "李四"
      }
    ],
    "total": 2,
    "size": 10,
    "current": 1,
    "pages": 1
  }
}

猜你喜欢

转载自www.cnblogs.com/yshyee/p/12713679.html
今日推荐