mybaits3整合spring总结

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");
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据库新发现

Oracle诊断案例-Sql_trace之二

http://www.eygle.com/case/sql_trace_2.htm

1114
来自专栏岑玉海

Hbase 学习(十一)使用hive往hbase当中导入数据

  我们可以有很多方式可以把数据导入到hbase当中,比如说用map-reduce,使用TableOutputFormat这个类,但是这种方式不是最优的方式。 ...

47113
来自专栏杨建荣的学习笔记

impdp异常中断导致的问题(r2第8天)

今天查看数据库的负载,发现cpu消耗异常的高。里面有不少dw的进程.但是查看impdp的进程却不存在。 查看datapump的进程情况,发现大量的job,但是状...

38711
来自专栏扎心了老铁

数据库表反向生成(一) MyBatis-generator与IDEA的集成

在Dao层,通过数据库表反向生成,可以节省我们很多的精力,把更多的精力投入复杂的业务中。 数据库表反向生成,指的是通过数据库如mysql中的库表schema生成...

1K8
来自专栏数据库新发现

Oracle诊断案例-Job任务停止执行

Last Updated: Saturday, 2004-11-20 12:47 Eygle

762
来自专栏你不就像风一样

SpringBoot整合Mybatis使用注解或XML的方式开发

[User{id=1, name='name', age=18}, User{id=2, name='name2', age=19}, User{id=3, n...

732
来自专栏数据库新发现

Oracle诊断案例-Job任务停止执行[最终版]

Last Updated: Friday, 2004-11-26 9:48 Eygle

1223
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》 第6章 Springboot数据库集成

在SpringBoot集成MyBatis时,我们将去掉和Mybatis配置相关的xml文件配置方式,用注解和属性配置来代替这些繁杂的配置。

1011
来自专栏扎心了老铁

springboot mybatis优雅的添加多数据源

springboot的原则是简化配置,本文试图不通过xml配置,使用configuration配置数据源,并进行简单的数据访问。 并且配置了多数据源,在开发过程...

4456
来自专栏杨建荣的学习笔记

ORACLE 11g导入9i dump的问题及解决

因为系统迁移,需要将一部分的9i的数据导入11g的库里, 目标库是11.2.0.3.0 64位的环境。 导入dump的时候,有一个比较大的分区表,需要用导入分...

3677

扫码关注云+社区

领取腾讯云代金券