Spring-Mybatis配置两种配置方法

原创
2016/05/19 13:57
阅读数 667

第一种:自动扫描接口,对应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);

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
6 收藏
2
分享
返回顶部
顶部