MyBatis与MycatDao如何实现外键查询
发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,这篇文章给大家分享的是有关MyBatis与MycatDao如何实现外键查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一丶 MyBatis 查询首先来看下表结构:user
千家信息网最后更新 2024年11月21日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安全错误
数据库的锁怎样保障安全
网络安全专业大学排名软科
3D制图软件开发
自动化编程学什么软件开发
南宁有什么打车软件开发
创建数据库class
网络科技有限公司软件开发
浪潮服务器raid配置
深圳网络安全产业规模
服务器上用什么输入法
专升本报名显示内部服务器错误
修改ext复选框数据库
导入数据库英文变中文版
网络安全从本质上是什么安全
吉成收款机连接不上数据库
现在什么游戏的服务器崩了
关系数据库中笛卡儿积定义
比亚迪程序软件开发助理
合肥软件开发外包公司哪个好
江苏专业软件开发服务电话
梦幻西游五开合适的服务器
最好的数据库的书
淘宝双十一服务器有哪些
vs2010 建立数据库
迪哥解说新服务器
网络安全信息应用的案例
专升本报名显示内部服务器错误
网络安全对初中同学的重要性
服务器绑定阿里云域名
电脑的网络安全密钥怎么查看
用r如何替换数据库