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

MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单。对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且MyBatis 专注于SQL,对于开发人员来说,也可极大限度地进行 SQL 调优,以保证性能。

SQL 映射文件的几个顶级元素(按照定义的顺序)

  ? mapper:映射文件的根元素节点,只有一个属性 namespace(命名空间) 。

   namespace 作用如下
     1、用于区别不同的 mapper,namespace 和 子元素的 id 联合保证全局唯一。
     2、绑定DAO接口。即面向接口编程,当 namespace 绑定某一接口之后,可以不用书写该接口的实现类,MyBatis 会通过接口的完整限定名查找到对应的 mapper 配置来执行 SQL 语句。因此 namespace 的命名必须跟某个接口同名,接口中的方法与映射文件中 SQL 语句 id 一一对应。

  ? cache :配置给定命名空间的缓存

  ? cache-ref :从其他命名空间引用缓存配置

  ? resultMap:用来描述数据库结果集和对象的对应关系

  ? sql:可以重用的 SQL 块,也可以被其他语句引用

  ? insert:映射插入语句

  ? update:映射更新语句

  ? delete:映射删除语句

  ? select:映射查询语句

  注意点

    关于 MyBatis 的 SQL 映射文件中的 mapper 元素的 namespace 属性有如下要求。
      (1) namespace 的命名必须跟某个 DAO 接口同名,同属于 DAO 层,故代码结构上,映射文件与该 DAO 接口应放置在同一 package 下,并且习惯上都是以 Mapper 结尾( UserMapper.java、 UserMapper.xml)。
      (2)在不同的 mapper 文件中,子元素的 id 可以相同,MyBatis 通过 namespace 和子元素的 id 联合区分。接口中的方法与映射文件中 SQL 语句 id 应一一对应。

Mybatis 别名

  完全限定名:如:cn.mybatis.pojo.User

   别名:User / user  (需要先配置 typeAliases 才能使用

  对于普通的 Java 类型,有许多内建的类型别名,并且它们对大小写不敏感。如:基础数据类型 “string” ,这是一个别名,代表 String ,属于一个内建的类型别名。

  

select 元素

  select:表示查询语句,是 MyBatis 最常用的元素之一,select 语句有很多属性可以详细配置每一条语句。

    常用属性如下:

     id 属性:命名空间中唯一的标识符,与  DAO 接口中某一方法名一一对应,可以被用来引用这条语句。DAO 接口中的方法名与映射文件中的 SQL 语句 id 一一对应。
     resultType 属性:表示 SQL 查询语句返回值类型的完全限定名或别名。(如果核心配置文件中设置了 typeAliases则返回类型可以不写完全限定名,且不区分大小写

      parameterType 属性:表示查询语句传入参数的类型的完全限定名或别名。它支持基础数据类型和复杂数据类型。说明:参数传递使用 #{参数名}  
    基础数据类型:int、String、Date等,只能传入一个,通过#{参数名}即可获取传入的值。
    复杂数据类型:Java实体类、Map等,通过 #{属性名} 或者 #{map 的 keyName}即可获取传入值

原文地址:https://www.cnblogs.com/wxdestiny/p/9744615.html

时间: 2024-08-25 16:27:54

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

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映射文件

1.使用MyBatis实现条件查询 (1)sql映射文件 mapper:映射文件的根元素节点,只有一个属性namespace,其作用如下: <1>用于区分不同的mapper,全局唯一 <2>绑定DAO接口,即面向接口编程.当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句.因此namespace的命名必须要跟接口同名. cache:配置给定命名空间的缓存 cache-ref:从其他命名空间

Mybatis 创建核心配置文件和 SQL 映射文件

Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-config.xml 或 xxxMapper.xml 即可.但是此时创建的 xml 文件达不到 Mybatis 配置文件的效果,运行必定报错找不到 URI.因为 Mybatis 配置文件头部包含了 URI 和 PUBLIC 等信息.因此我们先在 eclipse 中导入 Mybatis 两个配置文件各自

MyBatis SQL映射文件

SQL映射文件的几个顶级元素: mapper : 映射文件的根元素节点 只有一个属性namespace(命名空间) 作用:用于区分不同的mapper ,全局唯一 绑定DAO接口,即面向接口编程 ,namespace的命名必须要跟接口同名.   cache:  配置给定命名空间的缓存 cache-ref: 从其他命名空间引用缓存配置 resultMap: 用来描述数据库结果集和对象的对应关系.   sql : 可以重用的SQL块,也可以被其他语句引用. insert: 映射插入语句. update