mybaits3整合spring总结
时间:2022-04-29
本文章向大家介绍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");
}
}
- Mysql忘记root密码的恢复方法
- 深入剖析Go语言编程中switch语句的使用
- MySQL中DDL、DML、DCL的那些语句
- 如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
- golang实现简单的udp协议服务端与客户端示例
- Oracle 12c系列(三)|存储资源隔离 Flex Diskgroup
- Scala的map实现key和value排序及各种排序比较等知识讨论
- crontab执行后发送邮件到指定邮箱
- PHP-魔术变量
- 日志分析实战之清洗日志小实例7:查看样本数据,保存统计数据到文件
- hdu----(1671)Phone List(Trie带标签)
- PHP-数组
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
- 日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- [周末往期回顾]DB_CREATE_FILE_DEST,DB_CREATE_ONLINE_LOG_DEST_n
- 【DB宝18】在Docker中安装使用MySQL高可用之MGR
- [周末往期回顾]redis的介绍及安装
- [Oracle 日常管理]使用BBED定位数据位置
- [Oracle 日常管理]表的相关操作
- JsonPath实践(二)
- C# 使用OpenCV在一张图片里寻找人脸
- 【DB笔试面试858】在Oracle中,ipcs和ipcrm命令的作用有哪些?
- Qt音视频开发13-mpv录像存储
- Oracle参数解析(spfile)
- ROS2机器人笔记20-08-18
- C sharp实例:华盾武器门数据接收和解析
- JsonPath实践(三)
- 有序链表转换二叉搜索树
- 128. 最长连续序列