不写xml的MyBatis-Plus中关联属性的查询(1对1,1对n)
直接上代码
Teacher
@Data
public class Teacher {private int id;private String name;
}
student
@Data
public class Students {private int id;private String name;Private int tid; //teacher的id值@TableField(exist = false) //数据库中是无此字段的,MP中要排除掉private Teacher teacher; //关联属性teacher
}
接口
//TeacherMapper继承BaseMapper即可,其中没有关联属性,直接使用MP提供的方法
@Mapper
@Component
public interface TeacherMapper extends BaseMapper<Teacher> {}
@Mapper
@Component
public interface StudentMapper extends BaseMapper<Student> {//sql中有 ${ew.customSqlSegment} wrapper不能为null//Constants.WRAPPER枚举字符,其值为 "ew"//其中 tid 对应是数据库的字段名,不是对象里的属性名@Results({@Result(column = "tid",property = "teacher",one = @One(select = "com.*.*.mapper.TeacherMapper.selectById"))})@Select("select * from student ${ew.customSqlSegment} ")List<student> selectStudentListWrapperNotNull(@Param(Constants.WRAPPER)Wrapper<Customer> wrapper);//wrapper为null的情况下,查询全部记录//其中 tid 对应是数据库的字段名,不是对象里的属性名@Results({@Result(column = "tid",property = "teacher",one = @One(select = "com.*.*.mapper.TeacherMapper.selectById"))})@Select("select * from student")List<student> selectStudentListWrapperNull();
}
1对多使用的是many
@Service
public class StudentServiceImpl implements StudentService {@AutowiredStudentMapper studentMapper = null;@Overridepublic List<Student> selectStudentList (Wrapper<Student> wrapper) {if (wrapper != null) {return studentMapper.selectStudentListWrapperNotNull(wrapper);} else {return studentMapper.selectStudentListWrapperNull();}}
测试类
@AutowiredStudentService studentService = null;@Testvoid contextLoads() {//null为空,查询所有记录List<Student> list1 = studentService.selectStudentList(null);list1.forEach(System.out::println);//null不为空,条件查询List<Student> list2 = studentService.selectStudentList(Wrappers.<Student>lambdaQuery().orderByDesc(Student::getId()));list2.forEach(System.out::println);
}
参考文章:https://blog.csdn.net/u011573295/article/details/103491321
不写xml的MyBatis-Plus中关联属性的查询(1对1,1对n)相关推荐
- springboot log4j2.xml读取application.yml中的属性值
注意:部份代码太长,可以通过文末的图片快速查看对应位置 项目需求 用户想自己配置日志存放的位置,因此我们需要满足提供可以配置的文件,用以满足用户的需求. 因此,我们主要通过 log4j2.xml 来读 ...
- Android -- 写xml到SD卡中
信息类 private ...
- 下载并在Eclipse中关联Android源代码
大家都知道文档写的好当然让人非常舒服,可是有时候文档再好也不如直接看源代码来的直接,既然Android是开源的,为什么不在eclipse里直接看它的源代码呢? 1.下载源代码 这部分网上有大量的资料, ...
- mybatis 多表关联查询_Java修行第041天--MyBatis框架(下)--多表查询
1 解决列名和属性名不一致问题 如果查询时使用 resultType 属性, 表示采用 MyBatis 的Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配. 因此, 当数据库 ...
- mybatis一对多关联查询两种方式
mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...
- rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...
- mybatis 配置_MyBatis教程3:优化MyBatis配置文件中的配置
点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置 ...
- mybatis一对多关联 创建_MyBatis多对多关联查询(级联查询)
其实,MyBatis 没有实现多对多级联,这是因为多对多级联可以通过两个一对多级联进行替换. 例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系,使用一个中间表(订 ...
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
2019独角兽企业重金招聘Python工程师标准>>> 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...
- mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...
最新文章
- 1001: 整数求和
- 95后女生坚持转数学专业,成功直博双一流!网友:这是高手……
- 终身成长究竟有多重要?
- sqlite在c++中的使用方法
- 开发日记-20190404
- Effective Java之使可变性最小(十五)
- java map判断是否有键_检查Java HashMap中是否存在给定键
- Error when loading the SDK:解决方案
- LinkedHashMap转对象
- 主窗口刷新,子窗口闪烁
- jtopo node.text换行_jTopo学习笔记1
- 【深度学习】梯度消失与梯度爆炸的原因分析与解决策略
- 【大数据】Hadoop生态系统及其组件
- vue表单校验,根据某选项追加或去掉校验
- 抖音壁纸小程序源码最新版,支持达人入驻和多端发布
- 山西3件国宝春节期间亮相《国家宝藏》
- 硬盘坏了,如何检测与修复。
- 《名利场》:微软 “ 失落的十年”
- 目标检测:python实现多种图像数据增强的方法(光照,对比度,遮挡,模糊)
- 微信小程序免费http转https
热门文章
- 美式期权损益图matlab,期权损益图的画法
- Java数据结构:双向链表Double Linked List基础笔记
- python web框架的基础:WSGI、uWSGI、Nginx、web框架的关系
- 【浙江省第16届省赛J:】Welcome Party(并查集+优先队列bfs遍历)
- 用关键字搜索c语言,c语言-以关键字搜索程序
- 多模块顺序_广东省考行测时间如何分配?答题顺序的建议?
- java.util.list包_Java的Util包总结
- java sec_java.security文件
- 自动驾驶 6-4 高级转向控制 - MPC Advanced Steering Control - MPC
- 算法:匹配有效的括号20. Valid Parentheses