Spring学习笔记--spring+mybatis集成
前言:
技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, 以及ibatis的升级版mybatis. 从基本的xml配置, 也逐渐演化为注解方式配置.
技术的进步意味着, 你需要时刻保持一颗进步的心. 即便你经验丰富, 学识渊博. 但新技术的革命, 使得新人轻松超越. 希望作为一个技术人员, 始终有颗年轻的心.
本文将讲述一下, spring+mybatis的配置方式, 权当学习笔记.
mybatis配置:
mybatis-config.xml配置文件, 一般包含如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <? 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 > < typeAlias alias="Sample" type="com.sample.Sample" /> </ typeAliases > < environments default="development"> < environment id="development"> < transactionManager type="JDBC" /> < dataSource type="POOLED"> < property name="driver" value="${jdbc.driver}" /> < property name="url" value="${jdbc.url}" /> < property name="username" value="${jdbc.username}" /> < property name="password" value="${jdbc.password}" /> </ dataSource > </ environment > </ environments > < mappers > < mapper resource="com/sample/mapper/SampleMapper.xml" /> </ mappers > </ configuration > |
其中, typeAliase用于指定类的别名, 用于简写. environment用于设置datasource和transactionManager的细节. mapper则指定了具体要载入的mapper.xml文件.
mybatis可以脱离spring来运行, 具体不再展开, 详见后续的学习笔记.
spring集成:
mybatis和spring集成时, 其mybatis-config.xml中的environment标签将被自动忽略. 这个是大前提.
基本的关键词是: datasource, sqlsessionfactory, sqlsession, sqlmapper.
spring+mybatis配置方式有很多, 有暴露sqlsession, 也有借助SqlSessionDaoSupport类隐藏sqlsession. 这边讲述其中一种方式.
1) 配置Datasource
1 2 3 4 5 6 7 8 9 10 | <!--创建jdbc数据源 --> < bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> < property name="driverClassName" value="com.mysql.jdbc.Driver"/> < property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/> < property name="username" value="root"/> < property name="password" value=""/> < property name="maxActive" value="10"/> < property name="maxIdle" value="2"/> < property name="minIdle" value="2"/> </ bean > |
2) 配置SqlSessionFactoryBean
1 2 3 4 5 6 | <!-- 配置SqlSessionFactoryBean --> < bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> < property name="dataSource" ref="dataSource"/> < property name="mapperLocations" value="classpath*:mybatis/*.xml" /> <!--<property name="configLocation" value="classpath:mybatis.xml"/>--> </ bean > |
3) 配置MapperScannerConfigurer
1 2 3 4 | < bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" > < property name="basePackage" value="com.springapp.mvc.sqlmapper" /> < property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </ bean > |
4) 配置TransactionManager
1 2 3 4 | <!-- 配置Spring的事务管理器 --> < bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> < property name="dataSource" ref="dataSource" /> </ bean > |
以上就是整个spring+mybatis的一个相对完整的配置, 当然由于版本升级, 不同spring和mybatis细节上是有差异的.
这边选用的版本为mybatis为3.3.0, mybatis-spring为1.2.3.
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- mybatis & mybatis-spring --> < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis</ artifactId > < version >3.3.0</ version > </ dependency > < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis-spring</ artifactId > < version >1.2.3</ version > </ dependency > |
SqlMapper的JAVA样例代码如下:
1 2 3 4 5 6 | public interface MessageMapper { @Select ( "SELECT * FROM tb_message WHERE message_id = #{message_id}" ) Message queryMessage( @Param ( "message_id" ) int messageId); } |
其在MapperScanner后, 生成了一个代理类用于处理sql的执行和请求响应的映射处理. 同时在spring容器中按类型注入.
springmvc集成:
作为web应用的话, 需要指定并载入相关的配置信息.
假设所有的spring+mybatis的集成, 都在alicationContext.xml文件中配置.
在web.xml中, 添加如下代码:
1 2 3 4 5 6 7 8 | <!-- 添加spring相关的配置文件&属性--> < context-param > < param-name >contextConfigLocation</ param-name > < param-value >classpath*:applicationContext*.xml</ param-value > </ context-param > < listener > < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class > </ listener > |
总结:
感觉有些潦草, 并没有形成一个完整的可运行的小例子. 所幸我自己能看懂, ^_^. Mybatis涉及的知识点很多, 希望后续的学习能好好补上. 推荐参考书籍<<Java Persistence With Mybatis 3>>, 以及大神的博文链接.
公众号&游戏站点:
个人微信公众号: 木目的H5游戏世界
posted on 2015-09-27 01:33 mumuxinfei 阅读(424) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构