首页 > 其他分享 >Mybatis 返回对象中包含多个 List<String>属性

Mybatis 返回对象中包含多个 List<String>属性

时间:2022-12-03 23:35:54浏览次数:36  
标签:INSERT String ai List role user Mybatis id name


数据库数据

mysql> select * from ai_user;
+----+-----------+--------+
| id | user_name | status |
+----+-----------+--------+
| 1 | Answer | 1 |
| 2 | Iris | 1 |
+----+-----------+--------+

mysql> select * from ai_name;
+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 1 | Answer |
| 1 | AI |
| 1 | AAL |
| 2 | Iris |
| 2 | Ellis |
| 2 | Monta |
+---------+-----------+

mysql> select * from ai_role;
+---------+-----------------+
| user_id | role_name |
+---------+-----------------+
| 1 | Admin |
| 1 | Manager |
| 1 | Coder |
| 2 | CustomerService |
+---------+-----------------+

 

实体类

@Data
public class User {
private Long id;
private List<String> names;
private List<String> roles;
}

 

Mapper 层

public interface UserMapper {
List<User> queryUsers();
}

 

Mapper Sql 映射文件

<resultMap id="UserMap" type="User">
<result column="id" property="id" jdbcType="BIGINT" />
<collection property="names" resultMap="NamesMap" />
<collection property="roles" resultMap="RolesMap" />
</resultMap>

<resultMap id="NamesMap" type="string">
<result column="user_name" />
</resultMap>

<resultMap id="RolesMap" type="string">
<result column="role_name" />
</resultMap>

<select id="queryUsers" resultMap="UserMap">
SELECT au.id, an.user_name, ar.role_name
FROM ai_user au
LEFT JOIN ai_name an ON an.user_id = au.id
LEFT JOIN ai_role ar ON ar.user_id = au.id
</select>

 

结果输出示例

{"id":1,"names":["Answer","AI","AAL"],"roles":["Admin","Manager","Coder"]}
{"id":2,"names":["Iris","Ellis","Monta"],"roles":["CustomerService"]}

 

数据库脚本

DROP TABLE IF EXISTS `ai_name`;
CREATE TABLE `ai_name` (
`user_id` bigint(18) NOT NULL,
`user_name` varchar(55) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of ai_name
-- ----------------------------
INSERT INTO `ai_name` VALUES ('1', 'Answer');
INSERT INTO `ai_name` VALUES ('1', 'AI');
INSERT INTO `ai_name` VALUES ('1', 'AAL');
INSERT INTO `ai_name` VALUES ('2', 'Iris');
INSERT INTO `ai_name` VALUES ('2', 'Ellis');
INSERT INTO `ai_name` VALUES ('2', 'Monta');

-- ----------------------------
-- Table structure for `ai_role`
-- ----------------------------
DROP TABLE IF EXISTS `ai_role`;
CREATE TABLE `ai_role` (
`user_id` bigint(18) NOT NULL,
`role_name` varchar(55) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of ai_role
-- ----------------------------
INSERT INTO `ai_role` VALUES ('1', 'Admin');
INSERT INTO `ai_role` VALUES ('1', 'Manager');
INSERT INTO `ai_role` VALUES ('1', 'Coder');
INSERT INTO `ai_role` VALUES ('2', 'CustomerService');

-- ----------------------------
-- Table structure for `ai_user`
-- ----------------------------
DROP TABLE IF EXISTS `ai_user`;
CREATE TABLE `ai_user` (
`id` bigint(18) NOT NULL AUTO_INCREMENT,
`user_name` varchar(55) NOT NULL,
`status` tinyint(5) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of ai_user
-- ----------------------------
INSERT INTO `ai_user` VALUES ('1', 'Answer', '1');
INSERT INTO `ai_user` VALUES ('2', 'Iris', '1');


标签:INSERT,String,ai,List,role,user,Mybatis,id,name
From: https://blog.51cto.com/u_15891990/5908793

相关文章

  • guava异步增强-ListenableFuture
    jdk原生的future已经提供了异步操作,但是不能直接回调。guava对future进行了增强,核心接口就是ListenableFuture。如果已经开始使用了jdk8,可以直接学习使用原生的CompletableF......
  • SpringBoot整合Mybatis多数据源
    Mybatis中如何配置多数据源一什么情况下会用到多数据库?场景1:一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站的产品数据,......
  • SpringBoot整合Mybatis多数据源
    Mybatis中如何配置多数据源一什么情况下会用到多数据库?场景1:一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站......
  • 初始化一个ArrayList的多种方式
    序言本片文章用于归纳java中初始化一个ArrayList的几种方式add方法添加最基础的方式就是我们在new一个ArrayList之后使用add方法添加元素/***第一种方式,通过ad......
  • String相关
     面试题packagecom.atguigu.exer;​/*  面试题:*/publicclassStringTest{​  Stringstr=newString("good");  char[]ch={'t','e','s','t'};​......
  • Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置
    在前面有一篇博客:Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发,我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容。我们更想要的......
  • Day30:ArrayList详解
    ArrayList1.1集合概述当我们要存储多个数据时,固定长度的数组存储格式已经满足不了我们的需要了,且不能满足变化的需求;Java中集合类则可以解决我们的需求特点:提供一种存......
  • SpringCloud+MyBatis+Redis整合—— 超详细实例(一)
    1、SpringCloud+MyBatisMyBatis是一款优秀的轻量级半自动持久层框架,与之相对应的还有hibernate框架。①  话不多说,接下来搭建SpringCloud+MyBatis环境:第一步......
  • cpp list files end with suffix and list them respectively
    #include<chrono>#include<ctime>#include<dirent.h>#include<fstream>#include<iostream>#include<thread>#include<unistd.h>#include<uuid/uuid.h>#in......
  • java——mybatis——Mybatis的多表操作——完成user的一对多查询操作
                                                       ......