文章目录

  • 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注解开发之一对多查询相关推荐

  1. MyBatis-学习笔记12【12.Mybatis注解开发】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  2. Mybatis注解开发(一对一)

    其他代码访问:Mybatis注解开发基础操作 1.添加OrderMapper接口 public interface OrderMapper {// @Select("select *,o.i ...

  3. Mybatis注解开发指北

    Mybatis注解开发指北 目录 文章目录 Mybatis注解开发指北 @[toc] 0. Mybatis注解开发步骤 1. 导入相关配置文件 2. 配置数据库连接 3. 创建数据库对应的实体类(en ...

  4. Mybatis注解开发笔记

    Mybatis注解开发(笔记) 欢迎来到菜鸟研究所 创建新的Maven项目 配置文件 prom.xml log4j.properties jdbcConfig.properties SqlMapCom ...

  5. Mybatis注解开发(超详细)

    Mybatis注解开发 mybatis的常用注解 使用 Mybatis 注解实现基本 CRUD 项目目录结构 编写实体类 使用注解方式开发持久层接口 编写 SqlMapConfig.xml 配置文件 ...

  6. Mybatis 注解开发 + 动态SQL

    Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql 目录 每文一铺垫(今天有小插曲哦) 注解开发 添加 @Insert 删除 @Delete 查询 @Select 修改 @ ...

  7. Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)

    1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...

  8. java 注解 @?(name=quot;usernamequot;),【MyBatis】MyBatis 注解开发

    @Results 代替了 <id> 标签和 <result> 标签,属性介绍: id 是否是主键字段 column 数据库的列名 property 需要装配的属性名 one 需 ...

  9. java day56【 Mybatis 延迟加载策略 、 Mybatis 缓存、Mybatis 注解开发 】

    第1章 Mybatis 延迟加载策略 1.1 何为延迟加载? 1.2 实现需求 1.3 使用 assocation 实现延迟加载 1.3.1 账户的持久层 DAO 接口 1.3.2 账户的持久层映射文 ...

最新文章

  1. 把握三大计划 抓住ERP项目实施的灵魂
  2. java输入正确的信息_判断用户输入的信息是否正确
  3. vue function (i)第一次点击不执行_vue下$nextTick及原理浅析
  4. 查看服务器是有有默认共享文件,服务器共享文件远程查看
  5. HDU 5972 Regular Number
  6. 币圈名利场,一场赤裸裸的狼人杀
  7. 关于在Eclipse里面启动了服务,但是localhost:8080无法访问的问题:
  8. 2021-09-10 Bagging[7](并 行)和Boosting[8](串行)是两种常见的集成学习方法
  9. Pytorch——momentum动量
  10. 有没有java自编歌曲_简易音乐播放器制作
  11. ZBrush菜单栏详解(二),3D建模新手必走的进阶之路
  12. 【OpenCV3】直线拟合--FitLine()函数详解
  13. IDEA必装插件-Gyro(强烈推荐)
  14. 辗转相除法求最大公因数-C语言
  15. GraalVM Enterprise Edition 22.3.0 企业版安装
  16. 立创EDA助力2021全国电赛数百万奖学金!
  17. ctfshow命令执行
  18. Javabean,POJO,PO,VO,DTO
  19. 修改母版中页面的Title
  20. 关于28岁字节跳动程序员退休,看这一篇就够了

热门文章

  1. CSS3动画、定位小结
  2. Unity — ShareSDK 获取微信头像
  3. 终极PK!固态硬盘SSD和机械硬盘HDD,谁更胜一筹
  4. Vue之mixins使用
  5. android模仿支付宝生活圈下拉加载控件TriangleLoadingView
  6. 华为即将发布2019年业绩,2019年Q4业绩或出现下滑
  7. python queue put阻塞_python 队列(queue)阻塞
  8. 《功夫》2005新年贺岁大片
  9. 自研基于monolog的Laravel日志代码
  10. python 3d绘图 拖动_在python中以交互方式旋转3D绘图 - matplotlib