第四章 动态SQL
什么是动态SQL:同一个dao的方法,根据不同的条件可以表示不同的sql与语句,主要是where部分有变化,使用mybatis提供的标签实现动态sql的能力,主要讲if,where,foreach,sql,
使用动态sql的时候,Dao方法的形参使用Java对象。
什么时候使用动态sql?
内容列表
- 动态sql-if
- 动态sql-where
- 动态sql-foreach
- 动态sql-片段
if 标签
语法:
where 标签
使用if标签时,容易引起sql语句语法错误,使用where标签解决if产生的语法问题。
使用where,里面是一个或多个if标签,当有一个if标签判断为true,where标签会转为where关键字附加到sql语句的后面,如果if没有一个条件为true,忽略where和里面的if。
where标签删除和他最近的or或者and。
语法:
foreach
使用foreach可以循环数组,list集合,一般使用在in语句中。
语法:
动态SQL之代码片段
标签用于定义SQL片段,以便其他SQL标签复用,而其他标签使用该sql片段,需要使用子标签。该标签可以定义SQL语句中的任何部分,所以子标签可以放在动态SQL的任何位置。
接口方法:
第五章 Mybatis配置文件
mybatis配置文件两大类:1.mybatis主配置文件;2.mybatis的mapper文件
1.mybatis主配置文件:提供mybatis全局设置的,包含的内容日志,数据源,mapper文件位置
2.mapper文件:写sql语句的,一个表一个mapper文件
settings部分
settings是mybatis的全局设置,影响整个mybatis的运行,这个设置一般使用默认值就行。
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="defaultFetchSize" value="100"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
typeAliase别名
配置环境
environments:环境标签,可以配置多个
属性:default,必须是某个environment的id属性值
environment:表示一个数据库的连接信息
属性:id 自定义的环境标识。唯一值
transactionManager:事务管理器
属性:type表示事务管理器的类型
属性值:JDBC:使用Connection对象,由mybatis自己完成事物的处理
MANAGED:管理,表示把事物的处理交给容器实现(其他软件完成事物的提交回滚)
dataSourc:数据源,创建Connection对象,连接数据库
属性:type数据源的类型
属性值:POOLED,mybatis会在内存中创建PooledDataSource类,管理多个Connection连接对象,使用的连接池
UNPOOLED,不适用连接池,mybatis创建一个UNPOOLEDDataSource这个类,每次执行sql语句先创建connection对象再执行sql语句,最后关闭Connection
JNDI:Java的命名和目录服务
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
使用数据库属性配置文件
需要把数据库的配置信息放到一个单独文件中,独立管理,这个文件扩展名是properties,在这个文件中使用自定义的key=value的格式表示数据。
mapper标签
使用mapper指定其他mapper文件的位置,mapper标签使用的格式有两种常用的方式
扩展
Pagehelper
mybatis通用分页插件
https://github.com/pagehelper/Mybatis-Pagehelper
maven坐标
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>最新版本</version>
</dependency>
加入plugin配置
在<>之前加入
<plugin>
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugin>