第一种:自动扫描接口,对应mapper文件
applicationContext.xml
<!-- dataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${datasource.driverClassName}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="${datasource.initialPoolSize}" />
<property name="minPoolSize" value="${datasource.minPollSize}" />
<property name="maxPoolSize" value="${datasource.maxPoolSize}" />
<property name="maxIdleTime" value="${datasource.maxIdleTime}" />
<property name="acquireIncrement" value="${datasource.acquireIncrement}" />
<property name="idleConnectionTestPeriod" value="${datasource.idleConnectionTestPeriod}" />
<property name="acquireRetryAttempts" value="${datasource.acquireRetryAttempts}" />
<property name="breakAfterAcquireFailure" value="${datasource.breakAfterAcquireFailure}" />
<property name="maxStatements" value="${datasource.maxStatements}" />
<property name="testConnectionOnCheckout" value="${datasource.testConnectionOnCheckout}" />
</bean>
<!-- sqlSession -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- transaction -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.iread.persistence.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
其中Dao接口文件在 com.iread.persistence.dao 包下,如:<property name="basePackage" value="com.iread.persistence.dao" />
mapper文件放在 classpath:mapper/*Mapper.xml 下
对应mapper文件的写法,命名空间:namespace="com.iread.persistence.dao.AppDao",为mapper文件对应的Dao接口路径
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.iread.persistence.dao.AppDao">
<resultMap id="BaseResultMap" type="com.iread.persistence.entity.App">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="version_code" property="versionCode" jdbcType="VARCHAR" />
<result column="app_size" property="appSize" jdbcType="INTEGER" />
<result column="download_url" property="downloadUrl" jdbcType="VARCHAR" />
<result column="description" property="description" jdbcType="VARCHAR" />
<result column="release_timestamp" property="releaseTimestamp" jdbcType="BIGINT" />
<result column="release_flag" property="releaseFlag" jdbcType="TINYINT" />
<result column="update_flag" property="updateFlag" jdbcType="TINYINT" />
<result column="created_timestamp" property="createdTimestamp" jdbcType="BIGINT" />
<result column="created_user" property="createdUser" jdbcType="INTEGER" />
<result column="updated_timestamp" property="updatedTimestamp" jdbcType="BIGINT" />
<result column="updated_user" property="updatedUser" jdbcType="INTEGER" />
</resultMap>
<!-- parameterType必须写完整的路径 com.iread.persistence.entity.App -->
<insert id="insertOne" parameterType="com.iread.persistence.entity.App">
INSERT INTO ir_app
(
id, version_code, version_name, app_name,app_size, download_url,
description, released_timestamp, release_flag, update_flag,
created_timestamp, created_user, updated_timestamp, updated_user
)
VALUES
(
#{id}, #{versionCode},#{versionName},#{appName}, #{appSize}, #{downloadUrl},
#{description}, #{releasedTimestamp}, #{releaseFlag}, #{updateFlag},
#{createdTimestamp}, #{createdUser}, #{updatedTimestamp}, #{updatedUser}
)
</insert>
</mapper>
第二种方式:通过SqlSession注入操作
<!-- sqlSession -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${datasource.driverClassName}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="${datasource.initialPoolSize}" />
<property name="minPoolSize" value="${datasource.minPollSize}" />
<property name="maxPoolSize" value="${datasource.maxPoolSize}" />
<property name="maxIdleTime" value="${datasource.maxIdleTime}" />
<property name="acquireIncrement" value="${datasource.acquireIncrement}" />
<property name="idleConnectionTestPeriod" value="${datasource.idleConnectionTestPeriod}" />
<property name="acquireRetryAttempts" value="${datasource.acquireRetryAttempts}" />
<property name="breakAfterAcquireFailure" value="${datasource.breakAfterAcquireFailure}" />
<property name="maxStatements" value="${datasource.maxStatements}" />
<property name="testConnectionOnCheckout" value="${datasource.testConnectionOnCheckout}" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
需要一个mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.iread.spider.persistence.entity"/>
</typeAliases>
<mappers>
<mapper resource="mapper/contentMapper.xml" />
</mappers>
</configuration>
配置mapper 文件和实体类位置
对应mapper文件的写法如下,namespace可以随意命名 namespace="content"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="content">
<resultMap id="subSourceMap" type="subSourceEntity">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="url" column="url" />
<result property="contentType" column="content_type" />
<result property="account" column="account" />
<result property="uplevelType" column="uplevel_type" />
<result property="uplevelCode" column="uplevel_code" />
<result property="uplevelName" column="uplevel_name" />
<result property="crawlFlag" column="crawl_flag" />
<result property="autoPublishFlag" column="auto_publish_flag" />
<result property="offlineFlag" column="offline_flag" />
<result property="description" column="description" />
<result property="createdTimestamp" column="created_timestamp" />
<result property="createdUser" column="created_user" />
</resultMap>
</mapper>
然后Java代码如下:
@Autowired
protected SqlSession sqlSession;
sqlSession.selectList("content.select_subsourceurls_by_cate", cateCode);
sqlSession.insert("content.insert_content", content);