千家信息网

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如何替换数据库
0