1、maven定义properties:
<org.springframework.version>4.3.1.RELEASE</org.springframework.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.8</mybatis.version>
<!-- mybatis-srping版本号 -->
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mybatis.paginator.version>1.2.15</mybatis.paginator.version>
2、maven加入mybaits依赖包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>${mybatis.paginator.version}</version>
</dependency>
3、spring 配置文件,增加数据源以及mybaits
<!-- 数据源 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>${DEFAULT_JNDI}</value>
</property>
</bean>
<!-- 配置mybatis sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/sqlmap-config-${DBTYPE}.xml" />
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
DBTYPE为参数
4、sqlmap-config-oracle.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>
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.sven.ssm.dto"></package> <!-- 扫描model的包名 -->
</typeAliases>
<plugins>
<plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
<property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/>
</plugin>
</plugins>
<mappers>
<mapper resource="mybatis/oracle/UserDto.xml" />
</mappers>
</configuration>
5、UserDto.xml示例:
<?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">
<!-- namespace用于java代码调用时识别指定xml的mapper文件 -->
<mapper namespace="UserDto">
<!-- 用来定义可重用的SQL代码段 -->
<!-- sql片段 -->
<sql id="Base_Column_List">
A.USER_ID,USER_NAME,USER_CODE,PWD,CONTACT_INFO,MEMO,USER_EFF_DATE,USER_EXP_DATE,CREATED_DATE,A.STATE,A.STATE_DATE,IS_LOCKED,PWD_EXP_DATE,FORCE_LOGIN,LOGIN_FAIL,UNLOCK_DATE,A.SP_ID
</sql>
<select id="selectUserByUserCode" parameterType="Map" resultType="UserDto">
SELECT
<include refid="Base_Column_List"></include><!-- sql片段引入 -->
,B.PORTAL_ID, B.APP_ID
FROM
BFM_USER A,BFM_APP_USER B
WHERE
A.USER_ID=B.USER_ID AND B.APP_ID=#{APP_ID} AND A.STATE!='X' AND
B.STATE!='X'
AND
<choose>
<when test="caseSensitive !=null and caseSensitive != ''">
UPPER(A.USER_CODE) = #{USER_CODE}
</when>
<otherwise>
A.USER_CODE = #{USER_CODE}
</otherwise>
</choose>
</select>
</mapper>
6、使用demo
java.util.Map<String,String> parameterMap = new java.util.HashMap<String,String> ();
parameterMap.put("APP_ID", String.valueOf(appId));
parameterMap.put("USER_CODE", caseSensitive ? userCode.toUpperCase() : userCode);
parameterMap.put("caseSensitive", caseSensitive ?"True":null);
UserDto dto = DaoUtils.getSqlTpl().selectOne("UserDto.selectUserByUserCode", parameterMap);
其中DaoUtils为一个简单的工具类,用来获取sqlSessionTemplate
public class DaoUtils {
public static SqlSessionTemplate getSqlTpl() {
return getSqlTpl(null);
}
public static SqlSessionTemplate getSqlTpl(String jndi_name) {
if (!TransactionSynchronizationManager.isSynchronizationActive()) {
throw new RuntimeException("没有通过Spring的事务管控,不允许获取连接!");
}
/*if (Consts.LOG_JNDI_NAME.equals(jndi_name)) { //日志库
return SpringUtils.getBean("logSqlSessionTemplate");
}*/
return SpringUtils.getBean("sqlSessionTemplate");
}
}