MyBatis注解开发之一对多查询
文章目录
- 0. MyBatis的注解实现复杂映射开发
- 1. 一对多查询
- 1.1 一对多查询的模型
- 1.2 一对多查询的语句
- 1.3 创建StudentMapper接口
- 1.4 使用注解配置Mapper
- 1.5 测试类
- 1.6 一对多配置总结
0. MyBatis的注解实现复杂映射开发
实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用@Results注解,@Result注解,@One注解,@Many注解组合完成复杂关系的配置
1. 一对多查询
1.1 一对多查询的模型
一对多查询的需求:查询一个课程,与此同时查询出该该课程对应的学生信息
1.2 一对多查询的语句
对应的sql语句:
SELECT * FROM classesSELECT * FROM student WHERE cid=#{cid}
1.3 创建StudentMapper接口
public interface StudentMapper {//根据cid查询student表@Select("SELECT * FROM student WHERE cid=#{cid}")public abstract List<Student> selectByCid(Integer cid);
}
1.4 使用注解配置Mapper
public interface ClassesMapper {//查询全部@Select("SELECT * FROM classes")@Results({@Result(column = "id",property = "id"),@Result(column = "name",property = "name"),@Result(property = "students", // 被包含对象的变量名javaType = List.class, // 被包含对象的实际数据类型column = "id", // 根据查询出的classes表的id字段来查询student表/*many、@Many 一对多查询的固定写法select属性:指定调用哪个接口中的哪个查询方法*/many = @Many(select = "com.yyl.one_to_many.StudentMapper.selectByCid"))})public abstract List<Classes> selectAll();
}
1.5 测试类
public class Test01 {@Testpublic void selectAll() throws Exception{//1.加载核心配置文件InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");//2.获取SqlSession工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//3.通过工厂对象获取SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession(true);//4.获取ClassesMapper接口的实现类对象ClassesMapper mapper = sqlSession.getMapper(ClassesMapper.class);//5.调用实现类对象中的方法,接收结果List<Classes> list = mapper.selectAll();//6.处理结果for (Classes cls : list) {System.out.println(cls.getId() + "," + cls.getName());List<Student> students = cls.getStudents();for (Student student : students) {System.out.println("\t" + student);}}//7.释放资源sqlSession.close();is.close();}}
运行结果如下:
1.6 一对多配置总结
注解 | 说明 |
---|---|
@Results |
封装映射关系的父注解。 Result[] value():定义了 Result 数组 |
@Result |
封装映射关系的子注解。 column 属性:查询出的表中字段名称 property 属性:实体对象中的属性名称 javaType 属性:被包含对象的数据类型 many 属性:一对多查询固定属性 |
@Many |
一对多查询的注解。 select 属性:指定调用某个接口中的方法 |
MyBatis注解开发之一对多查询相关推荐
- MyBatis-学习笔记12【12.Mybatis注解开发】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- Mybatis注解开发(一对一)
其他代码访问:Mybatis注解开发基础操作 1.添加OrderMapper接口 public interface OrderMapper {// @Select("select *,o.i ...
- Mybatis注解开发指北
Mybatis注解开发指北 目录 文章目录 Mybatis注解开发指北 @[toc] 0. Mybatis注解开发步骤 1. 导入相关配置文件 2. 配置数据库连接 3. 创建数据库对应的实体类(en ...
- Mybatis注解开发笔记
Mybatis注解开发(笔记) 欢迎来到菜鸟研究所 创建新的Maven项目 配置文件 prom.xml log4j.properties jdbcConfig.properties SqlMapCom ...
- Mybatis注解开发(超详细)
Mybatis注解开发 mybatis的常用注解 使用 Mybatis 注解实现基本 CRUD 项目目录结构 编写实体类 使用注解方式开发持久层接口 编写 SqlMapConfig.xml 配置文件 ...
- Mybatis 注解开发 + 动态SQL
Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql 目录 每文一铺垫(今天有小插曲哦) 注解开发 添加 @Insert 删除 @Delete 查询 @Select 修改 @ ...
- Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)
1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...
- java 注解 @?(name=quot;usernamequot;),【MyBatis】MyBatis 注解开发
@Results 代替了 <id> 标签和 <result> 标签,属性介绍: id 是否是主键字段 column 数据库的列名 property 需要装配的属性名 one 需 ...
- java day56【 Mybatis 延迟加载策略 、 Mybatis 缓存、Mybatis 注解开发 】
第1章 Mybatis 延迟加载策略 1.1 何为延迟加载? 1.2 实现需求 1.3 使用 assocation 实现延迟加载 1.3.1 账户的持久层 DAO 接口 1.3.2 账户的持久层映射文 ...
最新文章
- 把握三大计划 抓住ERP项目实施的灵魂
- java输入正确的信息_判断用户输入的信息是否正确
- vue function (i)第一次点击不执行_vue下$nextTick及原理浅析
- 查看服务器是有有默认共享文件,服务器共享文件远程查看
- HDU 5972 Regular Number
- 币圈名利场,一场赤裸裸的狼人杀
- 关于在Eclipse里面启动了服务,但是localhost:8080无法访问的问题:
- 2021-09-10 Bagging[7](并 行)和Boosting[8](串行)是两种常见的集成学习方法
- Pytorch——momentum动量
- 有没有java自编歌曲_简易音乐播放器制作
- ZBrush菜单栏详解(二),3D建模新手必走的进阶之路
- 【OpenCV3】直线拟合--FitLine()函数详解
- IDEA必装插件-Gyro(强烈推荐)
- 辗转相除法求最大公因数-C语言
- GraalVM Enterprise Edition 22.3.0 企业版安装
- 立创EDA助力2021全国电赛数百万奖学金!
- ctfshow命令执行
- Javabean,POJO,PO,VO,DTO
- 修改母版中页面的Title
- 关于28岁字节跳动程序员退休,看这一篇就够了