换一种思路达到xml中动态设置resulttype
温馨提示:
本文最后更新于 2022年10月27日,已超过 918 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
一 项目需求
通过数据库表名获取数据
二 实现思路
数据库框架使用的是mybatis
1. 在mapper.xml中自定义sql
<select id="getDataByTableName" resultType="java.lang.Object">
select * from ${tableName}
</select>
使用Object对象进行返回值映射,只能查询出一列数据,想要查询出多列,需要将返回值设置为Map
2.设置resultType为map类型
1.xml
<select id="getDataByTableName" resultType="map">
select * from ${tableName}
</select>
2.mapper
List<Map<String,Object>> getDataByTableName(@Param("tableName") String tableName);
3. 用户表查询结果
{
"code": 200000,
"data": [
{
"password": "d191ea03b17c9722f8c33177fb5952a2",
"loginname": "user1",
"phone": "12236658742",
"name": "德玛西亚",
"id": "a97fbcc1-87b4-4354-8553-a45a9132feff"
},
{
"password": "d191ea03b17c9722f8c33177fb5952a2",
"loginname": "admin",
"phone": "13348852569",
"name": "张三丰",
"id": "b1b66631-4e02-4a11-ab5b-d286f56a0e8c",
"roletypeid": "2b4a8e27-515d-41ba-9981-5588a6c4c040"
}
],
"message": "请求成功"
}
4 补充
当某些数据库字段为空时,上述方式将不能返回这些为空的字段。此时可以根据数据库表名获取实体类,通过json处理即可。
1.数据库表名处理
此处的数据库表名为小写下划线命名,实体类名称为数据库表名的驼峰命名
tableName = tableName.substring(0,1).toUpperCase()+tableName.substring(1);
2.定义实体类的完整路径
包名加表名
String entity = "com.xxx.pojo.entity."+tableName;
3.通过json处理数据
//dataTempList(查询出来的集合)
JSON.parseArray(JSON.toJSONString(dataTempList), Class.forName(entity))
4. JSON依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
5. 处理后的效果
{
"code": 200000,
"data": [
{
"id": "a97fbcc1-87b4-4354-8553-a45a9132feff",
"loginname": "user1",
"organizationid": null,
"name": "德玛西亚",
"password": "d191ea03b17c9722f8c33177fb5952a2",
"phone": "12236658742",
"roletypeid": null,
"filerightid": null
},
{
"id": "b1b66631-4e02-4a11-ab5b-d286f56a0e8c",
"loginname": "admin",
"organizationid": null,
"name": "张三丰",
"password": "d191ea03b17c9722f8c33177fb5952a2",
"phone": "13348852569",
"roletypeid": "2b4a8e27-515d-41ba-9981-5588a6c4c040",
"filerightid": null
}
],
"message": "请求成功"
}
正文到此结束
- 本文标签: 其他
- 本文链接: https://www.tianyajuanke.top/article/7
- 版权声明: 本文由吴沛芙原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权