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
}
}
来源:oschina
链接:https://my.oschina.net/u/4326852/blog/3270040