论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Spring整合Mybatis方式一 - 常规整合 - 注册映射器 ...
Spring整合Mybatis方式一 - 常规整合 - 注册映射器
灌篮少年
金牌会员
|
2024-5-15 14:31:32
|
显示全部楼层
|
阅读模式
楼主
主题
851
|
帖子
851
|
积分
2553
前置工作
导包(mybatis-spring、mysql-connector-java、mybatis、spring-webmvc等)
实体类
DAO层两个文件(接口、xml文件);Service层的接口
编写Spring管理mybatis的xml-spring-dao.xml
核心代码(两种方式实现)
第一种:xml
<bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>
复制代码
第二种:annotation方式
点击查看代码
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
@Bean
public MapperFactoryBean<UserMapper> userMapper() throws Exception {
<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
MapperFactoryBean<UserMapper> factoryBean = new MapperFactoryBean<>(UserMapper.class);
<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
factoryBean.setSqlSessionFactory(sqlSessionFactory());
<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
return factoryBean;
}
复制代码
完整xml文件
<bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean><bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>
复制代码
重新编写Service实现类
public class BookServiceImpl implements BookService{<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
private BookMapper bookMapper;<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
@Autowired //需要spring-aop包<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
public BookServiceImpl(BookMapper bookMapper) {<bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>this.bookMapper = bookMapper;<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
}<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
@Override<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
public Book getBookById(Integer bookID) {<bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>return bookMapper.getBookById(bookID);<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
}}
复制代码
测试
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookServiceImpl = context.getBean("BookServiceImpl", BookService.class);
Book book = bookServiceImpl.getBookById(2);
System.out.println(book);
复制代码
改进注册映射器方式:使用发现映射器方式
MapperFactoryBean注册映射器的最大题目,就是需要一个个注册所有的映射器,而现实上mybatis-spring提供了扫描包下所有映射器接口的方法。
注意:以下两种设置方法,均可替换上述MapperFactoryBean设置,而其余代码与设置不变
方式一:设置扫描器标签
1.与上面设置MapperFactoryBean差异,该设置无需注入SqlSessionFactory,它会自动匹配已有的会话工厂bean
2.假如设置了多个DataSource,也就是多个sqlSessionFactory时,可以使用factory-ref参数指定需要的会话工厂
<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
复制代码
方式二:MapperScannerConfigurer类
1.与上面标签的功能差不多,同样是扫描基准包,自动注入会话工厂
2.假如要更换注入的会话工厂,差异于常用的ref引入bean,而是使用value指定bean名,且属性是sqlSessionFactoryBeanName
<bean id="sqlSessionFactory" >
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>
<bean id="userMapper" >
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>
复制代码
annotation方式
@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
mapperScannerConfigurer.setBasePackage("com.ylzl.dao");<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />
return mapperScannerConfigurer;}
复制代码
图片:
转载请注明原文链接:
https://www.cnblogs.com/yulingzhiling/p/18099455
若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者和博客园共有,接待转载,但未经作者同意必须保留此段声明,且在文章页面显着位置给出原文毗连,否则保留追究法律责任的权利.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
灌篮少年
金牌会员
这个人很懒什么都没写!
楼主热帖
【靶场】THM-Pickle Rick-练习
【WinUI3】ListView / GridView 学习总 ...
每日算法之二叉搜索树的后序遍历序列 ...
SAP WM高阶之下架策略M(Small Large Qu ...
用C# + Winform 做一个简易的游戏设计 ...
docker报错:Docker Desktop - WSL dis ...
Dubbo原理解析(非常透彻)
线程池
ClickHouse(03)ClickHouse怎么安装和部 ...
JDBC核心技术
标签云
存储
服务器
快速回复
返回顶部
返回列表