
MyBatis中核心配置文件还有这几个标签
1.<typeAliases>标签
- 该标签是给java类型定义类的别名的,以便于我们以后方便的在配置文件中使用
- 使用方式有两种,一种是你可以在<typeAliases>标签下的子标签<typeAliase type=“” alias=“”>中使用,它有两个属性,一个是type存放的是你的实体类,可以写时上实体类的全限定路径,alias中写你设定的别名。<typeAlias>中, 可以省略alias属性, 表示类别名为类名, 大小写不敏感。
- 第二种是方便在要操作的表文件很多时直接在<typeAliases>标签中的<package>标签中直接在name属性上面写上包的路径即可。


2 . MyBatis中的事务管理
- MyBatis中配置了事务管理器, type属性设置为JDBC. 表示MyBatis采用和原生JDBC相同的事务管理机制.
- 在MyBatis执行的开始时, 将自动提交功能关闭了. 所以, 在执行DML操作时, 需要手动提交事务.也就是在我们进行事务操作时候要在完成时进行手动提交。

当然我们也可以在在创建session对象的时候,将自动提交事务给打开。我们可以写一个MyBatis的工具类。并在里面打开自动提交,当然不建议使用自动提交。
package com.bjsxt.Util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
private static SqlSessionFactory factory;
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession getConnection() {
SqlSession session = null;
if (factory != null) {
// 设置为true则为自动提交
// session = factory.openSession(true);
session = factory.openSession();
}
return session;
}
}
3.接口綁定
接口绑定就是将对应的mapper.xml映射文件与我们自己定义的接口绑定起来,得到接口类型的对象, 方便方法的调用。在MyBatis中, 提供了一套接口绑定方案. 程序员可以提供一个接口, 然后提供对应接口的一个mapper.xml文件. MyBatis会自动将接口和xml文件进行绑定。
实现方式:

- 这里面我们要注意:
- xml文件名要和接口名一致
- namespace属性必须为接口的全限定路径
- id属性必须和接口对应的方法名一致

写好之后还要修改MyBatis的核心配置文件中扫描映射的方式
有两种:
a)扫描单个接口, 可以使用mapper标签的class属性

b)当扫描多个接口时, 为简化配置, 可以使用package标签, 表示扫描对应包下的所有接口.

4.通过接口绑定解决多参数的传递
方式一:
a)接口中定义方法

b)映射文件中提供对应的标签. 此时, SQL语句中获取方式有两种, 通过#{index}或#{param+数字}的方式.

方式二:
a)接口中定义方法, 参数中使用@Param注解设定参数名用于在SQL语句中使用.

b)映射文件中提供对应的标签. 此时, SQL语句中获取方式有两种, 通过#{参数名称}或#{param+数字}的方式.

5.动态Sql语句
(1) 什么是动态SQL? 有什么作用?
根据条件的不同Sql语句也会随之发生改变,就叫做动态SQL可以根据传入的参数不同而执行不同的SQL语句。
(2) 动态SQL常用的标签有哪些?
<if> 、<where>、<choose><when><otherwise>、<set>、<trim>、<bind>、<foreach>
1. 动态SQL_if_where:
If标签表示进行条件判断,if标签的test标签用于指定条件判断,在使用时为了保存拼接的条件语句正确,所以要在sql语句后加上where 1=1 或者与where语句一起使用。where标签是用于管理where语句,如果没有条件,则不会生成where语句,如果有条件便会自动生成where语句,如果第一个条件中有and则去除它。



2. 动态SQL_choose_when_otherwise与set
与switch case类似,当进行多个条件进行判断时可以使用它,而Set标签用于update语句中的set字句,当满足条件时将会自动添加set语句,去除set子句中的多余的逗号,当不满足条件时将不会生成set语句。

set语句


3. 动态SQL_trim_bind
Trim是在sql语句的前后添加或者删除某些内容,trim标签中prefix: 属性表示向sql语句前面添加内容,prefixOverrides: 从前sql语句后面删除内容 suffix: 表示向sql语句后面添加内容suffixOverrides: 从sql语句后面删除内容.
Bind标签可以加在sql语句中是对sql语句的再加工,bind的name属性是参数的名字,value属性是如何对参数进行修改,在进行模糊查询时可以使用



4.<foreach>
在sql语句中遍历集合参数时侯使用,在sql语句含有in查询时使用。Foreach标签中,collection属性存放的时待遍历的集合open属性是设置开始符号,item属性设置迭代变量,separator属性是设置项目分隔符,close属性是设置结束符号
