点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

作者 | 翟永超

来源 | http://blog.didispace.com/spring-boot-learning-21-3-6/

上一篇我们介绍了如何在Spring Boot中整合我们国人最常用的MyBatis来实现对关系型数据库的访问。但是上一篇中使用了注解方式来实现,而对于很多MyBatis老用户还是习惯于XML的开发方式,所以这篇,我们就来看看如何使用XML的方式来进行开发。

动手试试

本篇将不具体介绍整合MyBatis的基础内容,读者可以阅读上一篇:Spring Boot 2.x基础教程:使用MyBatis访问MySQL来了解该部分内容。

下面的实操部分将基于上一篇的例子之后进行,基础工程可通过文末仓库中的chapter3-5目录获取。

第一步:在应用主类中增加mapper的扫描包配置:

@MapperScan("com.didispace.chapter36.mapper")
@SpringBootApplication
public class Chapter36Application {public static void main(String[] args) {SpringApplication.run(Chapter36Application.class, args);}}

第二步:在第一步中指定的Mapper包下创建User表的Mapper定义:

public interface UserMapper {User findByName(@Param("name") String name);int insert(@Param("name") String name, @Param("age") Integer age);}

第三步:在配置文件中通过mybatis.mapper-locations参数指定xml配置的位置:

mybatis.mapper-locations=classpath:mapper/*.xml

第四步:在第三步中指定的xml配置目录下创建User表的mapper配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.didispace.chapter36.mapper.UserMapper"><select id="findByName" resultType="com.didispace.chapter36.entity.User">SELECT * FROM USER WHERE NAME = #{name}</select><insert id="insert">INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})</insert>
</mapper>

到这里从注解方式的MyBatis使用方式就改为了XML的配置方式了,为了验证是否运行正常,可以通过下面的单元测试来尝试对数据库的写和读操作:

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class Chapter36ApplicationTests {@Autowiredprivate UserMapper userMapper;@Test@Rollbackpublic void test() throws Exception {userMapper.insert("AAA", 20);User u = userMapper.findByName("AAA");Assert.assertEquals(20, u.getAge().intValue());}}

如果您在尝试没有成功,建议通过文末仓库查看完成代码,对比是否有所遗漏与疏忽。

更多本系列免费教程连载:

http://blog.didispace.com/spring-boot-learning-2x/

代码示例

本文的相关例子可以查看下面仓库中的chapter3-6目录:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/

  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!

关注我,回复“加群”加入微信讨论群

  • GitHub上最牛逼的10个"Star收割机"

  • 面试:5 亿整数的大文件,来排个序?

  • 2020 最新 JVM 生态报告

  • 收藏 | 这100+个免费API,免了自己去爬的烦恼!

  • 真实版删库跑路,宕机36小时市值蒸发9亿!

扫一扫,关注我

一起学习,一起进步

不开赞赏,在看=支持 

Spring Boot 2.x基础教程:使用MyBatis的XML配置方式相关推荐

  1. Spring Boot 2.x基础教程:MyBatis的多数据源配置

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前两天,我们已经介绍了关于JdbcTemplate的多数 ...

  2. Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  3. Spring Boot 2.x基础教程:使用JTA实现分布式事务

    在一个Spring Boot项目中,连接多个数据源还是比较常见的.之前也介绍了如何在几种常用框架的场景下配置多数据源,具体可见: Spring Boot 2.x基础教程:JdbcTemplate的多数 ...

  4. Spring Boot 2.x基础教程:使用集中式缓存Redis

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 之前我们介绍了两种进程内缓存的用法,包括Spring B ...

  5. Spring Boot 2.x基础教程:使用JTA实现多数据源的事务管理

    在一个Spring Boot项目中,连接多个数据源还是比较常见的.之前也介绍了如何在几种常用框架的场景下配置多数据源,具体可见: Spring Boot 2.x基础教程:JdbcTemplate的多数 ...

  6. Spring Boot 2.x基础教程:JdbcTemplate的多数据源配置

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 在本系列之前的教程中,我们已经介绍了如何使用目前最常用的 ...

  7. Spring Boot 2.x基础教程:使用Elastic Job的分片配置

    上一篇,我们介绍了如何使用Elastic Job实现定时任务(https://blog.didispace.com/spring-boot-learning-2-7-2/).解决了使用@Schedul ...

  8. Spring Boot 2.x基础教程:使用Elastic Job实现定时任务

    上一篇,我们介绍了如何使用Spring Boot自带的@Scheduled注解实现定时任务(https://blog.didispace.com/spring-boot-learning-2-7-1/ ...

  9. Spring Boot 2.x基础教程:使用Redis的发布订阅功能

    通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...

最新文章

  1. python flask 部署_如何进行Python Flask项目的部署?
  2. Android微信智能心跳方案
  3. mysql bit 和 tinyint 的区别及使用场景?
  4. Jerry Wang在SAP社区上获得的徽章
  5. ExpandableListView用法的一个简单小例子
  6. ACM 题目分类POJ(自用,精)
  7. 心理学博士vs计算机博士,零基础跨专业考心理学博士,可以给我一些建议吗?...
  8. 商业银行如何进行分布式数据库选型思考
  9. 为什么打完篮球后手接触篮球杆会有触电感?
  10. CSAPP Bomb Lab记录
  11. 简单的excel上传解析和错误反馈信息下载
  12. [Android实例教程] 教你如何拍照+相册选择图片+剪裁图片完整实现
  13. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(九)——运算放大器
  14. 股权模板:55套股权激励方案
  15. python 乘法运算定律_乘法运算定律
  16. 产品读书《用户界面设计-有效的人机交互策略》
  17. TortoiseSVN上传文件显示被锁定
  18. .idea文件夹如何取消版本控制
  19. 大数据Kylin(三):Kylin配置
  20. 【C语言】按要求输出矩阵。

热门文章

  1. golang 指定范围 生成随机数
  2. PostgreSQL(从版本9.3至11.2)任意命令执行漏洞 cve-2019-9193
  3. linux 内存管理中的 rss 和 vsz
  4. python3 filter 列表元素过滤(匹配)用法
  5. python3 随机数模块 得到一个10位随机数
  6. linux 进程隐藏常见方法
  7. linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
  8. 驱动保护中的ObjectType_Callback探索
  9. Android开发--PreferenceActivity中打开子PreferenceScreen黑屏的解决办法
  10. linux内核中等待队列