双表查询java代码_Java多表查询

mybatis02

测试接口绑定方案:

1.要求接口与所对应的xml映射文件处于同一包下,并且文件名字保持一致

2.sql映射文件的命名空间namespace 要求设置为所对应的接口的权限定名 包名.类名 com.xxxx.mapper.EmpMapper

3.sql映射文件中sql语句标签的id值要与对应的借口中的对应的抽象方法的方法名称保持一致 4.抽象方法的参数类型与返回值类型要求与对应的sql标签的入参与结果类型保持一致

5.当存在 多参数传递问题,sql语句中的占位符的名字只能默认为:[arg1, arg0, param1, param2]

6.如果想要占位符的名字匹配方法的参数名 可以使用@Param("参数的别名"),这时候在sql中就可以根据Param提供的别名设置占位符的名字

可以解决多参数传递的问题

自定义映射关系

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select empno,ename,job,mgr,sal,comm,hiredate,deptno from emp

public interface UserMapper {

/*查询用户信息查询所有得到用户信息根据用户名查询根据用户密码根据用户名和用户密码同时查询用户信息*/

public List queryUser(@Param("username") String username,@Param("password") Integer password);

/*修改数据根据id修改用户数据根据id修改用户名修改用密码修改用户名和用户密码*/

int updateUser(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);

/*修改数据根据id修改用户数据如果存在用户名就根据修改用户名用户名不存在,就修改用户密码两个都不存在就不修改*/

int updateUser2(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);

int updateUser3(@Param("id")Integer id,@Param("username") String username,@Param("password") Integer password);

// 根据用户名模糊查询用户信息 public List queryUserByNameLike(@Param("str") String str);

}

当传入参数大于一个时可以通过添加注解来为对象赋值@param

trim标签

/*if 判定标签test 属性中: 定义判定条件可以直接根据@Param() 中定义的参数名匹配方法的实参*/

/*判断用户名是否不为null并且也不为空串 */

/*where:如果标签where标签对中存在条件,拼接一个where关键字如果标签对中没有条件,就不拼接where关键字如果存在条件,会帮你把第一个条件前面的and关键字去掉*/

update t_user

username = #{username},

password = #{password},

id = #{id}

通过自定义映射关系实现多表查询

select empno,ename,job,mgr,sal,comm,hiredate,emp.deptno,dname,loc from emp left join dept on emp.deptno = dept.deptno

关系映射查询

多表联查:

1) 中间类

2) resultMap

一对一|多对一 :

查询所有的学生信息以及所在的班级信息

代码:

一端类中存在另一个类型的成员

学生类中存在班级类型的成员 | 员工类型中存在部门类型的成员

多的一方存在一的一方的成员

resultMap

一对多 : 查询所有的班级以及班级中的学生信息

代码: 在一的一方存在多的一方的List集合

班级类中存在一个成员List

resultMap

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MongoDB中,可以使用聚合查询和嵌入式文档的方式来实现双表查询。在聚合查询中,可以使用$lookup操作符来进行多关联查询。$lookup操作符可以在一个集合中查找匹配条件的记录,并将其与另一个集合中的记录关联起来。 首先,你需要使用$lookup操作符指定要关联的集合和关联条件。例如,如果你有两个集合A和B,你可以使用以下代码进行关联查询: ``` db.A.aggregate([ { $lookup: { from: "B", localField: "fieldA", foreignField: "fieldB", as: "result" } } ]) ``` 这个查询将在集合A中的fieldA字段和集合B中的fieldB字段之间进行匹配,并将匹配的记录作为嵌入式文档添加到A的每个记录中的result字段中。 另一种实现双表查询的方式是使用嵌入式文档。在MongoDB中,你可以在一个集合中嵌入另一个集合的记录。例如,如果你有两个集合A和B,你可以将B的记录嵌入到A的记录中。这样,当你查询A集合时,可以同时获取A和B的数据。 这里是一个示例代码: ``` db.A.find().forEach(function(doc) { var b = db.B.findOne({ _id: doc.bId }); doc.b = b; printjson(doc); }); ``` 这段代码将遍历A集合中的每个记录,并使用B集合中与之相关联的记录更新每个A记录中的b字段。 总结起来,MongoDB可以使用聚合查询和嵌入式文档的方式实现双表查询。聚合查询使用$lookup操作符进行关联查询,而嵌入式文档则将一个集合的记录嵌入到另一个集合的记录中。根据具体的需求和数据结构,你可以选择适合的方式来实现双表查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [java mongodb 多关联查询,多条件查询,分页,排序](https://blog.csdn.net/seesun2012/article/details/105165495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MongoDB 多连接查询](https://blog.csdn.net/weixin_39653761/article/details/113432062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值