MyBatis与MycatDao如何实现外键查询
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章给大家分享的是有关MyBatis与MycatDao如何实现外键查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一丶 MyBatis 查询首先来看下表结构:user
千家信息网最后更新 2025年02月22日MyBatis与MycatDao如何实现外键查询

这篇文章给大家分享的是有关MyBatis与MycatDao如何实现外键查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一丶 MyBatis 查询
首先来看下表结构:

user(用户信息表)表的id是user_role(用户权限中间表)中的user_id的外键
使用MyBatis联结查询我们需要如下配置和代码: 实体对象:
// User
@Getter
@Setter
@TableName("user")
public class User extends BaseEntity {
private String name;
private String password;
private List roles;
}
//用户权限关系中间表
@Getter
@Setter
@TableName("user_role")
public class RoleRe {
private String userId;
private String roleId;
}
web层:
@GetMapping("/testFind")
public User testFind() {
return userService.testFind();
}
servre层:
public User testFind() {
return userMapper.leftJionRole();
}
mapper层:
User leftJionRole();
xml配置:
xml是MyBatis的一大优势,xml允许更自由的操作动态sql,但是在带来便利的同时也增加了相应的配置操作,我们如果要使用关联查询,如果返回的对象其中有一个是集合属性就必须配置collection
并且要指定类型ofType
查询结果:
{
"id": 3,
"name": "test",
"password": "111111",
"roles": [
{
"userId": null,
"roleId": "3"
},
{
"userId": null,
"roleId": "2"
}
]
}
这里的userId
为空是显而易见的,因为并没有在result
中配置userId
的映射字段,所以返回的结果为null
,这样的小失误也经常发生在开发中
二丶 MycatDao 查询
实体对象
@Getter
@Setter
//mycatDao 会映射实体的大小写转为下划线
public class UserRole {
//需要告知mycatDao这个字段为外键
@ForeginKey(value = User.class)
private String userId;
private String roleId;
}
@GetMapping(value = "/test/user", produces = "application/json")
public JsonValue getUserInfoList() {
//分页对象及状态码
PageResultSet result = new PageResultSet();
JsonValue jsonRest = null;
try {
PagedQuery qry = new PowerDomainQuery()
//去除重复字段
.withAutoRemoveDupFields(true)
//添加第一个属性User,并忽略返回字段id
.addDomainFieldsExclude(User.class, new String[] { "id" })
//添加第二个属性 用户权限关联表
.addDomainFieldsExclude(UserRole.class, null);
//执行查询
jsonRest = leaderDao.exePagedQuery(qry);
} catch (Exception e) {
result.retCode = -1;
jsonRest = Json.createValue("error:" + e.toString());
}
return jsonRest;
}
响应结果
[
{
"name": {
"chars": "test",
"string": "test",
"valueType": "STRING"
},
"password": {
"chars": "111111",
"string": "111111",
"valueType": "STRING"
},
"roles": {
"chars": "user,admin1",
"string": "user,admin1",
"valueType": "STRING"
},
"userId": {
"integral": true,
"valueType": "NUMBER"
},
"roleId": {
"integral": true,
"valueType": "NUMBER"
}
},
{
"name": {
"chars": "test",
"string": "test",
"valueType": "STRING"
},
"password": {
"chars": "111111",
"string": "111111",
"valueType": "STRING"
},
"roles": {
"chars": "user,admin1",
"string": "user,admin1",
"valueType": "STRING"
},
"userId": {
"integral": true,
"valueType": "NUMBER"
},
"roleId": {
"integral": true,
"valueType": "NUMBER"
}
}
]
在操作上MycatDao简化了很多操作来方便开发者,这一点会在开发效率上得到明显的体现,但是MycatDao在响应结果上体验感逊色于MyBatis,这一点相信在未来的发展中会得到改善
感谢各位的阅读!关于"MyBatis与MycatDao如何实现外键查询"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
查询
配置
字段
对象
用户
结果
实体
属性
权限
开发
内容
更多
篇文章
关联
不错
实用
明显
自由
逊色
显而易见
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
日立电梯调试服务器
数据库安全性法律法规
混合软件开发需要学什么
越南租服务器哪家好
我的世界服务器联机空岛战争
网游大区服务器
类似91手机助手的软件开发
读博申请计算机网络安全
实时系统软件开发
在数据库中把xh
医院的服务器系统多少钱
服务器数据库可视化
互联网科技圈人生导师
产品技术资料数据库
北京会计软件开发计划
模拟软件开发手机游戏
平安租赁软件开发
四川惠普服务器虚拟化设计
dbc2000数据库
ps SQL数据库默认用户
萌出网络技术招聘
双流达一诚网络技术有限公司
vb.net数据库开发第2版
软件开发的意义是什么
网络技术个人简历推荐信
澄海区网络安全活动
年度网络安全工作进展总结报告
DDM服务器
安置点网络安全简报
互联网企业软件开发技术