spring boot 转xml格式报错解决方法-凯发k8官方网
- 1. 概述
- 2. mybatis xml
- 2.1 引入依赖
- 2.2 application
- 2.3 应用配置文件
- 2.4 mybatis 配置文件
- 2.5 userdo
- 2.6 usermapper
- 2.7 简单测试
- 3. mybatis 注解
- 3.1 差异部分
- 3.2 usermapper
- 3.3 简单测试
- 4. mybatis-plus
- 4.1 引入依赖
- 4.2 application
- 4.3 应用配置文件
- 4.4 userdo
- 4.5 usermapper
- 4.6 简单测试
- 5. tkmybatis
- 5.1 引入依赖
- 5.2 application
- 5.3 应用配置文件
- 5.4 mybatis 配置文件
- 5.5 userdo
- 5.6 usermapper
- 5.7 简单测试
- 666. 彩蛋
- 《java 2019 超神之路》
- 《dubbo 实现原理与源码解析 —— 精品合集》
- 《spring 实现原理与源码解析 —— 精品合集》
- 《mybatis 实现原理与源码解析 —— 精品合集》
- 《spring mvc 实现原理与源码解析 —— 精品合集》
- 《spring boot 实现原理与源码解析 —— 精品合集》
- 《数据库实体设计合集》
- 《java 面试题 —— 精品合集》
- 《java 学习指南 —— 精品合集》
本文,我们基于 spring boot 2.x 版本。
1. 概述
在 dal 数据访问层,目前会有三种方向的凯发k8官方网的解决方案:
- jdbc
- mybatis
- jpa
艿艿自己在 知识星球 中,做过一个简单的调研,看看大家使用哪个为主。结果是 mybatis > jpa > jdbc 。这个也符合在知乎上看到的两篇文章:
- 《mybatis 为什么在国内相当流行?》
- 《为什么阿里巴巴的持久层采用 ibatis 框架,而不使用 hibernate 框架呢?感觉 hibernate 更厉害的样子?》
而每个团队使用 mybatis 方式还有不同,主要是如下:
注意,几种方式可以组合使用。- mybatis xml
- mybatis 注解
- mybatis-plus
- tkmybatis
艿艿的团队,最终我们使用 xml 的方式,因为 xml 便于可以看到每个表使用到的 sql ,方便做优化和管理。
后来,考虑到提高开发效率,很多标准的数据库的 crud 操作,编写还是比较枯燥乏味浪费时间,所以使用 mybatis-plus 简化。当然,一些相对复杂的 sql ,还是会考虑使用 xml 。
下面,我们上面列的四种方式,逐个来入门。
2. mybatis xml
示例代码对应仓库:mybatis-xml 。本小节,我们会使用 mybatis-spring-boot-starter 自动化配置 mybatis 主要配置。同时,在 xml 中编写相应的 sql 操作。
2.1 引入依赖
在 pom.xml 文件中,引入相关依赖。
具体每个依赖的作用,胖友自己认真看下艿艿添加的所有注释噢。
2.2 application
创建 application.java 类,配置 @mapperscan 注解,扫描对应 mapper 接口所在的包路径。代码如下:
// application.java@springbootapplication @mapperscan(basepackages = "cn.iocoder.springboot.lab12.mybatis.mapper") public class application { }- `cn.iocoder.springboot.lab12.mybatis.mapper` 包路径下,就是我们 mapper 接口所在的包路径。
- 建议 1 :因为这里是做示例。实际项目中,可以考虑创建一个 mybatisconfig 配置类,将 @mapperscan 注解添加到其上。
2.3 应用配置文件
在 resources 目录下,创建 application.yaml 配置文件。配置如下:
spring:# datasource 数据源配置内容datasource:url: jdbc:mysql://47.112.193.81:3306/testb5f4?usessl=false&useunicode=true&characterencoding=utf-8driver-class-name: com.mysql.jdbc.driverusername: testb5f4password: f4df4db0ed86@11# mybatis 配置内容 mybatis:config-location: classpath:mybatis-config.xml # 配置 mybatis 配置文件路径mapper-locations: classpath:mapper/*.xml # 配置 mapper xml 地址type-aliases-package: cn.iocoder.springboot.lab12.mybatis.dataobject # 配置数据库实体包路径具体的每个配置项,胖友自己认真看下艿艿添加的所有注释噢。
2.4 mybatis 配置文件
在 resources 目录下,创建 mybatis-config.xml 配置文件。配置如下:
因为在数据库中的表的字段,我们是使用下划线风格,而数据库实体的字段使用驼峰风格,所以通过 mapunderscoretocamelcase = true 来自动转换。
2.5 userdo
在 cn.iocoder.springboot.lab12.mybatis.dataobject 包路径下,创建 userdo.java 类,用户 do 。代码如下:
// userdo.javapublic class userdo {/*** 用户编号*/private integer id;/*** 账号*/private string username;/*** 密码(明文)** ps:生产环境下,千万不要明文噢*/private string password;/*** 创建时间*/private date createtime;// ... 省略 setting/getting 方法}对应的创建表的 sql 如下:
create table `users` (`id` int(11) not null auto_increment comment '用户编号',`username` varchar(64) collate utf8mb4_bin default null comment '账号',`password` varchar(32) collate utf8mb4_bin default null comment '密码',`create_time` datetime default null comment '创建时间',primary key (`id`),unique key `idx_username` (`username`) ) engine=innodb auto_increment=4 default charset=utf8mb4 collate=utf8mb4_bin;2.6 usermapper
在 cn.iocoder.springboot.lab12.mybatis.mapper 包路径下,创建 usermapper 接口。代码如下:
// usermapper.java@repository public interface usermapper {int insert(userdo user);int updatebyid(userdo user);int deletebyid(@param("id") integer id); // 生产请使用标记删除,除非有点想不开,嘿嘿。userdo selectbyid(@param("id") integer id);userdo selectbyusername(@param("username") string username);list- @repository 注解,用于标记是数据访问 bean 对象。在 mybatis 的接口,实际非必须,只是为了避免在 service 中,@autowired 注入时无需报警。
- @param 注解,声明变量名。
- 在方法为单参数时,非必须。
- 在方法为多参数时,必须。艿艿自己的编程习惯,禁止使用 map 作为查询参数,因为无法通过方法的定义,很直观的看懂具体的用途。
- 细心的胖友,肯定会发现例如说 #selectbyusername(@param("username") string username) 等方法,是使用 by 字段结尾,这是为什么呢?一般情况下,在 sql 中的 where 条件字段,我们建议能够带在方法名后。原因无它,简单明了。如果是多个字段,可以使用 and 分隔。当然,如果查询字段比较多,可能方法名会比较长。
在 resources/mapper 路径下,创建 usermapper.xml 配置文件。代码如下:
- 建议 1 :对于绝大多数查询,我们是返回统一字段,所以可以使用 标签,定义 sql 段。对于性能或者查询字段比较大的查询,按需要的字段查询。
- 建议 2 :对于数据库的关键字,使用大写。例如说,select、where 等等。
- 建议 3 :基本是每“块”数据库关键字占用一行,胖友可以看看艿艿写的每一行示例。一定要排版干净,毕竟我们是有代码洁癖的男孩子。
2.7 简单测试
创建 usermappertest 测试类,我们来测试一下简单的 usermapper 的每个操作。代码如下:
// usermappertest.java@runwith(springrunner.class) @springboottest(classes = application.class) public class usermappertest {@autowiredprivate usermapper usermapper;@testpublic void testinsert() {userdo user = new userdo().setusername(uuid.randomuuid().tostring()).setpassword("nicai").setcreatetime(new date());usermapper.insert(user);}@testpublic void testupdatebyid() {userdo updateuser = new userdo().setid(1).setpassword("wobucai");usermapper.updatebyid(updateuser);}@testpublic void testdeletebyid() {usermapper.deletebyid(2);}@testpublic void testselectbyid() {usermapper.selectbyid(1);}@testpublic void testselectbyusername() {usermapper.selectbyusername("yunai");}@testpublic void testselectbyids() {list具体的,胖友可以自己跑跑,妥妥的。
如果胖友嫌弃手写 mybatis xml 很麻烦,可以看看 idea mybatiscodehelper-pro 插件。在没有使用 mybatis-plus 插件之前,使用过蛮长一段时间,我以前的老大也在用。当然,也可以考虑使用 mybatis generator (mbg) 。
:-d 搜索微信号(id:芋道源码),可以获得各种 java 源码解析、原理讲解、面试题、学习指南。
:-d 并且,回复【书籍】后,可以领取笔者推荐的各种 java 从入门到架构的 100 本书籍。
:-d 并且,回复【技术群】后,可以加入专门讨论 java、后端、架构的技术群。
来吧,骚年~
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是凯发k8官方网为你收集整理的spring boot 转xml格式报错解决方法_芋道 spring boot mybatis 入门(一)之 mybatis xml...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 以下python语言关键字在异常处理_【
- 下一篇: python中的内置函数怎么学_pyth