本文的持久化操作使用的是mybatis的sqlSessionTemplate,可用
SqlSession sqlSession= sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);
//增
int result = sqlSession.insert("userMapper.insertUsers",user);
//删
int result = sqlSession.delete("userMapper.deleteUsers",49);
//改
int result = sqlSession.update("userMapper.updateUsers",user);
//查
List<User> list = sqlSession.selectList("userMapper.queryUsers");
User user = sqlSession.selectOne("userMapper.queryUserById",2);
把一个User对象写入数据库,相当于之前一直使用的parameterType="User",它不需要使用dao层,而直接用sqlSessionTemplate去使用mapper.xml里具体的持久化方法。它在spring-mybatis.xml中的配置为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="order" value="1"/>
<property name="locations">
<list>
<value>classpath:oracle.properties</value>
</list>
</property>
</bean>
<!-- 自动扫描 -->
<context:component-scan base-package="cn.richinfo.**" />
<!-- 数据库配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="${oracle.datasource.url}" />
<property name="username" value="${oracle.datasource.username}" />
<property name="password" value="${oracle.datasource.password}" />
<property name="maxActive" value="${oracle.datasource.maxActive}"/>
<property name="maxIdle" value="${oracle.datasource.maxIdle}"/>
<property name="maxWait" value="${oracle.datasource.maxWait}"/>
<property name="logAbandoned" value="${oracle.datasource.logAbandoned}"/>
<property name="removeAbandoned" value="${oracle.datasource.removeAbandoned}"/>
<property name="removeAbandonedTimeout" value="${oracle.datasource.removeAbandonedTimeout}"/>
<property name="validationQuery" value="select 1 from dual" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 扫描包的方式注入所有的Mapper -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:cn/richinfo/mapper/*.xml"/>
</bean>
<!-- 配置扫描器 -->
<!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">-->
<!--<property name="basePackage" value="com.richinfo.**.dao" />-->
<!--<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />-->
<!--</bean>-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
</beans>
并且在applicationContent.xml中导入
<import resource="classpath*:spring-mybatis.xml" />
mqpper.xml中的写法与spring结合mybatis一直使用的那一套一致。这里要注意的是:
<mapper namespace="userMapper">
<insert id="insertUser" parameterType="cn.data.User">
如上例,在使用中要用"mapperName.methodName"