MyBatis与MycatDao如何实现外键查询
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关MyBatis与MycatDao如何实现外键查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一丶 MyBatis 查询首先来看下表结构:user
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
互联网科技工作委员会毛军
上海挚品互联网科技
百单互联网科技有限公司
顺玮阁互联网科技
掌上梦互联网科技
互联网高科技企业
哈尔滨新华互联网科技
互联网科技创新企业排名
互联网科技公司招聘
互联网时代科技改变生活
苏州五指互联网络科技有限
华夏互联网科技业
苏州铭阳互联网科技有限公司
迪庆互联网科技招生
佛山市翊博互联网络科技有限公司
上海钢联属于互联网科技股吗
浙南科技城互联网大厦招聘
上海互联网科技公司ppt
福建互联网展示科技馆设计
互联网科技品牌
广州为想互联网科技有限公司
互联网 卓越科技
互联网金融和金融科技
安控科技rtu产品工业互联网
北京华百购互联网科技有限公司
互联网科技大赛获奖感言
互联网金融科技元年
江苏互联网智能科技产品出厂价
艺电能源互联网科技有限公司招聘
中国互联网公司的科技投入