mybatis在spring里的配置

经过验证:springframework采用4.3以上版本,mybatis-spring采用1.3.0以上版本,可以解决冲突的问题。

<!--spring-mybatis-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.2</version>
</dependency>

一级缓存:每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。 为了解决这一问题,MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果缓存起来, 当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。

1、SqlSessionFactory通过spring提供的 SqlSessionFactoryBean 来创建,是SqlSessionFactoryBean.getObject()返回的结果。

SqlSessionFactoryBean 有以下几个属性:
1) dataSource       该属性必须配置,多数据源时会有多个dataSource,同时也需要配置多个sqlSessionFactory来对应。
2) configLocation 它是用来指定mybatis 的基础配置文件路径的。当SqlSessionFactoryBean提供的配置不能满足使用时,你可以使用mybatis-config.xml配置其他属性。通过configLocation属性指定该配置的路径,SqlSessionFactoryBean会使用该配置文件创建Configuration。

3) typeAliasesPackage  一般对应我们的实体类所在的包,会自动取对应包中简单类名作为包括包名的别名。多个package之间可以用逗号或者分号等来进行分隔。

<typeAliases>
    <typeAlias type="com.changhf.entity" alias="user"/>
</typeAliases>
<!--上述配置,随实体类数量线性增长,可以通过package方式批量配置,且这种方式别名不区分大小写-->
<typeAliases>
    <package name="com.changhf.entity"/>
</typeAliases>

mybatis自定义别名:string/long/int/double/boolean等小写配置

4) mapperLocations  sqlSessionFactory会自动扫描并解析该路径下的所有映射器文件。

5) plugins  可以配置MyBatis的拦截器,拦截器的配置顺序会影响拦截器的执行顺序。
从上往下的拦截器,实际的执行顺序是这样,第一个拦截器会最后执行,最后一个会首先执行。然后出拦截器的顺序和配置的顺序一致,第一个最先返回,最后一个最后返回。

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource1" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <property name="typeAliasesPackage" value="com.cgw360.cls.domain.model" />
        <property name="mapperLocations" value="classpath*:sqlmap/**/*.xml" />
	<property name="plugins">
		<bean
			class="com.cmcc.akso.plugin.database.page.PaginationInterceptor">
			<property name="properties">
				<props>
					<prop key="dialect">${jdbc.type}</prop>
				</props>
			</property>
		</bean>
	</property>
</bean>

2、MapperScannerConfigurer 配置    它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean。
MyBatis-Spring 提供了一个动态代理的实现MapperFactoryBean。这个类可以将数据映射器接口注入到你的 service 层 bean 中。你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。
1) basePackage属性   必须要配的属性。
2) sqlSessionFactoryBeanName属性  只有当你配置多数据源的时候,这时会有多个sqlSessionFactory,你就需要通过该属性来指定哪一个sqlSessionFactory

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
	<property name="basePackage" value="com.chf.dao"/>
</bean>

3、mybatis只是一个半自动化的ORM实现,需要我们自己写sql,而不像hibernate那样,直接定义好实体与数据表的映射就行。

参考 mybatis开发Dao的方法
4、typeAliases属性

resultType属性的值为com.yu.model.User,表示这个查询返回的类型为com.yu.model.User类型。

<select id="findUserById" resultType="com.yu.model.User" parameterType="long">  
        select * from t_user where id = #{id}
</select>

如果有很多种类型的话,每次都得把类型的全路径写上,感觉就很费事。所以就可以用mybatis提供的typeAliases来进行别名配置。

<typeAliases>  
      <typeAlias type="com.yu.model.User" alias="User" />
      <typeAlias type="com.yu.model.Org" alias="Org"/>
</typeAliases>

上面的配置可以改为

<select id="findUserById" resultType="User" parameterType="long">  
        select * from t_user where id = #{id}
</select>

5、连接池配置

个人经验,一般在线上建议最小连接数控制在10 左右,最大连接数控制在 20~30 左右即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值