MyBatis的SQL映射文件

1.使用MyBatis实现条件查询

(1)sql映射文件

  • mapper:映射文件的根元素节点,只有一个属性namespace,其作用如下:

  <1>用于区分不同的mapper,全局唯一

  <2>绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要跟接口同名。

  • cache:配置给定命名空间的缓存
  • cache-ref:从其他命名空间引用缓存配置
  • resultMap:用来描述数据库结果集和对象的对应关系
  • sql:可以重用的SQL块,也可以被其他语句引用
  • insert:映射插入语句
  • update:映射更新语句
  • delete:映射删除语句
  • select:映射查询语句

2.使用resultMap完成查询结果的展现

 (1)resultType

  resultType直接表示返回类型,包括基础数据类型和复杂数据类型

 (2)resultMap

  resultMap则是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上。它的应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果

 (3)resultType和resultMap的关联

  在MyBatis进行查询映射的时候,其实查询出来的每个字段值都放在一个对应的Map里面,其中键是字段名,值则是其对应的值。当select元素提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋值给resultType所指定的对象对应的属性(即调用对应的对象里的属性的setter方法进行填充)。

resultType属性和resultMap属性绝对不能同时存在

3.使用@Param注解实现多参数入参

4.使用resultMap实现高级结果映射

(4.1)association

  association仅处理一对一的关联关系

(4.2)collection

5.resultMap自动映射级别和MyBatis缓存

 (1)MyBatis对resultMap自动映射的三个匹配级别:

  • NONE:禁止自动匹配
  • PARTIAL(默认):自动匹配所有属性,有内部嵌套(association、collection)除外
  • FULL:自动匹配所有

 

  

原文地址:https://www.cnblogs.com/bokeboke/p/9198526.html

时间: 2024-10-13 07:31:45

MyBatis的SQL映射文件的相关文章

mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用

1.自定义某个 javabean 的封装规则: 注:可以看到,select 标签中引用了 定义好的 resultMap 的值.resultMap 标签中的 type 为javabean 类型,id 为唯一标识.id 子标签定义主键(这样定义底层会有优化.)column 属性为字段名,property 属性为字段值. 注:可以看到测试结果没有出现问题,说明代码没有错误. 2.自定义某个 javabean 的级联属性封装: a.准备工作:mysql 数据库中,在之前 tbl_employees 表的

MyBatis之sql映射文件

MyBatis的强大之处就在于它的sql映射文件,下面介绍sql映射文件的几个顶级元素配置 1)mapper:映射文件的根元素节点,只有一个namespace(命名空间) * 用于区分不同的mapper,全局唯一 * 绑定dao接口,即面向接口编程, 当,namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整的限定名查找到对应的mapper配置来执行sql语句,应此namespace的命名必须要跟接口同名. 2)cache:配置给定的命名空间的缓存 3)ca

mybatis 的 sql 映射文件增删改查的学习

在 sql 映射文件中配置增删改查的操作:     1.增: 在 sql 映射文件中添加 insert 标签,并且增加对应的 sql 语句.(在之前博文示例的基础上添加)在 对应的接口中添加 对应的方法,方法名与 sql 映射文件中 insert 标签中的 id 属性值一致. 注:可以看到,在测试方法 test03 中更新成功.但是在 openSession 对象需要手动提交事务.(sqlSessionFactory.openSession 方法的得到的 openSession 对象,使用 sq

【三】MyBatis的SQL映射文件 ----- 一对多的关联查询

一对多关联查询的解决方案也有两种:嵌套结果和嵌套查询 在上一篇博客中已经讲了一对一的关联查询,在MySQL数据库中已经存在了班级表 class 和教师表 teacher.为了满足一对多关联查询的要求,还需要创建一张学生表 student.这样,在查询班级信息的同时,可以得到教师和学生的信息. 创建 student 表的 SQL 语句如下: CREATE TABLE student( s_id INT PRIMARY KEY AUTO_INCREMENT, s_name VARCHAR(20),

【二】MyBatis的SQL映射文件 ----- 一对一的关联查询

现在假设数据库中有两张表,一张是班级表,另一张是教师表.一个班级只有一名班主任老师,而一个老师只能担任一个班的班主任,这就是我们所说的一对一关联关系.现在要求,查询班级表的同时也要查询出老师的信息.两张表的数据如下所示: 教师表: 班级表: 创建表的SQL语句如下(MySQL数据库): CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id

Mybatis二 SQL映射文件

SQL映射文件 单条件查询 1. 在ISmbmsUserDao接口添加抽象方法 //根据用户名模糊查询 List<SmbmsUser> getUserListByName(); 2. 在UserMapper.xml里添加SQL <!--根据用户名模糊查询--> <select id="getUserListByName" resultType="SmbmsUser" parameterType="String">

传参在mybatis的sql映射文件中正确获取

1.单个参数: 非自定义对象 传参:getStuById(Integer id): 取值:#{id} 单个基本类型参数,随便取值都行:#{ok} 对象: 传参:saveStudent(Student student) 取值:#{属性名} 2.多个参数: 传参:getStudentByLastNameAndAge(String lastName,Integer age) 取值:#{参数名}不好使:报错提示可用的参数是[0,1,param1,param2] 可用的取值方式: 1)#{参数索引} #{

Mybatis 的基本要素—SQL 映射文件

MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且MyBatis 专注于SQL,对于开发人员来说,也可极大限度地进行 SQL 调优,以保证性能. SQL 映射文件的几个顶级元素(按照定义的顺序) ? mapper:映射文件的根元素节点,只有一个属性 namespace(命名空间) . namespace 作用如下 1.用于区别不同的 mapper,

MyBatis -- sql映射文件详解

MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给定命名空间的缓存. cache-ref从其他命名空间引用缓存配置. resultMap最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象. parameterMap已经被废弃了!老式风格的参数映射.内联参数是首选,这个元素可能在将来被移除. sql可以重用的SQL块,也可以被其他