在mybatis中要构建sqlSessionFactory对象,让它来产生SqlSession,而在mybatis-spring中,SqlSession的产生是通过SqlSessionTemplate来实现的,它提供了对SqlSession操作的封装。所以通过SqlSessionTemplate可以得到Mapper
配置依赖的包
<!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.3</version> </dependency>
配置数据源
使用的是druid,参考https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
配置sqlSessionFactory
<!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 配置mapper路径 --> <property name="mapperLocations" value="classpath*:com/zyx/demo/mapper/**/*Mapper.xml"/> </bean>
<configuration> <settings> <!-- 全局映射器启用缓存 --> <setting name="cacheEnabled" value="false" /> <!-- 懒加载 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false" /> <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 允许使用列标签代替列名 --> <setting name="useColumnLabel" value="true" /> <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 --> <setting name="useGeneratedKeys" value="true" /> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="FULL" /> <!-- 对于批量更新操作缓存SQL以提高性能 --> <!-- <setting name="defaultExecutorType" value="BATCH" />--> <!-- 数据库超过25000秒仍未响应则超时 --> <setting name="defaultStatementTimeout" value="25000" /> <setting name="localCacheScope" value="STATEMENT"/> </settings> </configuration>
属性名称 | 简单描述 | 设置值 | 默认值 | |
cacheEnabled | 对在此配置文件下的所有cache 进行全局性开/关设置 | true | false | true | |
lazyLoadingEnabled | 全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载。 | true | false | true | |
aggressiveLazyLoading | 当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。 | true | false | true | |
multipleResultSetsEnabled | 允许和不允许单条语句返回多个数据集 | true | false | true | |
useColumnLabel | 使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。 | true | false | true | |
useGeneratedKeys | 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 | true | false | false | |
autoMappingBehavior | 指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。 |
NONE, PARTIAL, FULL |
PARTIAL | |
defaultExecutorType | 配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE | |
defaultStatementTimeout | 设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时 | 正整数 |
Not Set null) |
|
配置sqlSessionTemplate
<!-- 配置sqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"/> </bean>
配置MapperScannerConfigurer
<!-- 配置MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate" /> <property name="basePackage" value="com.zyx.demo.**.dao" /> </bean>