bind元素可以从OGNL表达式中创建一个变量并将其绑定到上下文。<select id="selectEmployeeLikeName" resultType="cn.mybati.domain.Employee"><bind name="pattern" value=&qu...

关于动态SQL另外一个常用的操作就是需要对一个集合进行遍历,通常发生在构建IN条件语句时。<select id="selectEmployeeIn" resultType="cn.mybatis.domain.Employee"> SELECT * FROM tb_employee WHERE ID ...

关于动态更新语句还可以使用set元素。set元素可以被用于动态包含需要更新的列,而舍去其他的。<!-- 根据id查询员工信息--><select id="selectEmployeewithId" parameterType="int" resultType="cn.mybatis.d...

前面几个例子已经很好地解决了动态SQL问题。现在回到之前的if示例,这次我们将state="ACTIVE"也设置成动态的条件,看看会发生什么。<select id="selectEmployeeByIdLike" resultType="cn.mybatis.domain.Emplyee"> SELE...

有些时候,我们不想用所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis提供了choose元素,它有点像Java中的switch语句。还是上面的例子,但是这次变为提供了id就按id查找,提供了loginname 和password就按loginnam 和password查找,若两者都没有提供,就返回所有sex等于男的Employee。<...

MyBatis还有一个强大特性就是它的动态SQL。在实际项目开发中,经常需要根据不同条件拼接SQL语句,拼接时还要确保不能忘了必要的空格,有时候还要注意省掉列名列表最后的逗号,等等。在使用JDBC 或其他类似持久层框架操作数据库时,处理这种情况是非常麻烦的,甚至可以用痛苦来形容,而在MyBatis中利用动态SQL这一特性可以很简单地解决这个问题。动态S...

本文修订于2019年3月17日SQL脚本在实际项目开发中,多对多关系也是非常常见的关系,比如,一个购物系统中,一个用户可以有多个订单,这是一对多的关系;一个订单中可以购买多种商品,一种商品也可以属于多个不同的订单,订单和商品就是多对多的关系。对于数据库中多对多关系建议使用一个中间表来维护关系,中间表中的订单d作为外键参照订单表的id,商品id作为外键参...

本文修订于2019年3月17日SQL脚本在实际项目开发中,一对多是非常常见的关系,比如,一个班级可以有多个学生,一个学生只能属于一个班级,班级和学生是一对多的关系,而学生和班级是多对一的关系。数据库中一对多关系通常使用主外键关联,外键列应该在多方,即多方维护关系。下面我们就用一个简单示例来看看MyBatis怎么处理一对多关系。首先,给在数据库创建两个表...

本文修订日期:2019年11月25日SQL脚本在实际项目开发中,经常存在一对一关系,比如一个人只能有一个身份证,一个身份证只能给一个人使用,这就是一对一的关系。一对一关系推荐使用唯一主外键关联,即两张表使用外键关联,由于是一对一关联,因此还需要给外键列增加unique唯一约束。下面我们就用一个简单示例来看看MyBatis怎么处理一对一关系。首先,在数据...

resultMap元素resultMap元素是MyBatis中最重要最强大的元素。它的作用是告诉MyBatis将从结果集中取出的数据转换成开发者所需要的对象。下面是最简单的映射语句示例:<select id="selectUser" resultType="map"> SELECT * FROM TB...

sql元素sql元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。它可以被静态地(在加载参数时) 参数化。不同的属性值通过包含的实例发生变化。例如:<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql&g...

insert、update 和delete元素insert,update和delete元素用来映射DML语句,是MyBatis 中最常用的元素之一。insert,update和delete元素配置和select 非常接近。例如:<insert id="insertUser" parameterType="cn.myb...

MyBatis的真正强大之处在于它的映射语句,这也是它的魔力所在。由于它的功能异常强大,映射器的XML文件就显得相对简单。如果拿它跟具有相同功能的JDBC代码进行对比,你会立即发现省掉了将近95%的代码。MyBatis 就是针对SQL 构建的,并且比普通的方法做得更好。SQL映射文件常用的元素如下:select。映射查询语句。insert。映射插入语句...

MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory) 实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现。// 自定义对象工厂 public class ExampleOb...

修订于:2018年9月2日类型处理器(typeHandlers)无论是 MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成Java类型。下表描述了一些默认的类型处理器。 类型处理器 Java 类型 ...

修订于:2018年9月2日typeAliases类型命名类型别名是为Java类型设置的一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的冗余。<typeAliases><typeAlias alias="user" type="cn.mybatis.domain.User"...

修订于:2018年9月2日简介MyBatis的配置文件包含了影响MyBatis行为的信息。文档的结构如下:顶层configuration 配置properties属性settings设置typeAliases类型命名typeHandlers类型处理器objectFactory对象工厂plugins插件environments环境environment环...

修订时间:2018年9月1日我们知道MyBatis的持久化操作离不开SqlSessionFactory对象,该对象由SqlSessionFactoryBuilde加载MyBatis的配置文件产生。SqlSessionFactory对象的openSession方法可以打开SqlSession对象。具体代码如下所示:// 读取mybatis-config....

本文更新日期:2019年10月4日1、SqlSession 简介关于SqlSession的作用,官方文档是这样介绍的:The primary Java interface for working with MyBatis. Through this interface you can execute commands, get mappers and ...

本文更新日期:2019年9月22日1、SqlSessionFactory简介SqlSessionFactory是MyBatis中的一个重要的对象,它是用来创建SqlSession对象的,而SqlSession用来操作数据库的。2、SqlSessionFactory生成SqlSessionFactory对象可以通过SqlSessionFactoryBui...