如何集成与使用Spring Boot + Mybatis-Plus


如何集成与使用Spring Boot + Mybatis-Plus,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。当Spring Boot应用从主方法main()启动后,首先加载Spring Boot注解类@SpringBootApplication。在该类里加载注解类@EnableAutoConfiguration。EnableAutoConfiguration类使用注解类@Import导入了AutoConfigurationImportSelector自动配置选择器类来加载其他可自动配置的组件,步骤如下:1、AutoConfigurationImportSelector自动配置选择器调用getCandidateConfigurations方法,方法中SpringFactoriesLoader类通过loadFactoryNames方法扫描获取各jar包类路径下的META-INF/spring.factories文件2、将扫描到的META-INF/spring.factories文件封装成Properties对象3、遍历Properties对象,从中取出属性名org.springframework.boot.autoconfigure.EnableAutoConfiguration.EnableAutoConfiguration对应的值,值就为当前Jar包需Spring Boot加载的配置类,加载到容器中,并根据配置条件实例化配置类中的类对象来看下mybatis-plus-boot-starter包下的META-INF/spring.factories文件文件中只有一条配置属性值,对应的自动配置类为MybatisPlusAutoConfiguration。至此,MyBatis-Plus是如何被自动配置并加载容器介绍到这里,后续会讲解Spring Boot时会更细致自动配置原理,各位同伴们继续关注。了解Spring Boot是如何自动配置MyBatis-Plus后,接下来讲解使用MyBatis-Plus进行通用的CRUD操作以及相关操作的配置。上一章节,我们准备了一个sql脚本,执行脚本后创建t_sys_log表,表结构可以查看上一章节。接着我们在项目中创建对应entity类和mapper接口1. 目录结构如下2. 实体类SysLog属性如下3. 在SysLogMapper接口中继承MyBatis-Plus包中BaseMapper接口,接口定义泛型,使用SysLog类4. 注入mapper接口,需要将mapper实例到Spring容器中,在这三种方式在Spring Boot主方法类上加上@MapperScan(“com.banxun.demo.mapper”),配置mapper接口所在包路径,自动扫描此路径下的mapper接口直接在mapper接口上加入@Mapper注解在项目中新建config目录,再新建MybatisConfig配置类,使用注解@Configuration定义此类为配置类,使用注解注解@Bean。容器启动时,创建MapperScannerConfigurer对象,设置basePackage属性值为mapper接口的包路径到此,MyBatis-Plus基本配置完成,我们来使用junit进行测试,看看测试有什么问题,针对具体问题来解决。后续章节中对MyBatis-Plus其他配置一一进行讲解。在junit测试类中注入SysLogMapper,编写如下代码插入一条日志记录,执行junit测试方法问题1: Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table ‘wechat.sys_log’ doesn’t exist执行完成控制台输出打印上面的异常信息,报sys_log表不存在,而我们创建的表名为t_sys_log,有前缀”t_“。在现在配置下,MyBatis-Plus默认自动按驼峰结构类名进行映射成带下划线_隔离的表名,解决此问题有两种方法:在实体类名SysLog上加@TableName注解指定映射表名在配置文件application.properties添加全局配置属性统一处理未注解指定表名实体类映射表名时加入前缀”t_问题2: Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘log_id’ in ‘field list’根据问题1配置完成后再次执行junit测试方法,控制台输出打印上面的异常信息,报log_id列不存在。在t_sys_log表中,主键名为f_log_id,这里同样缺少字段前缀,解决方法有两种:默认MyBatis-Plus会根据属性驼峰命名自动进行字段映射及主键名叫id都可无注解指定字段名属性名上加@TableField(“字段名”)注解指定映射字段名,主键字段使用@TableId(“字段名”)注解通过配置文件application.properties添加全局配置属性统一处理,%s对应自动映射字段名问题3:org.mybatis.spring.MyBatisSystemException: nested exception isorg.apache.ibatis.reflection.ReflectionException: Could not set property ‘logId’ of ‘classcom.banxun.demo.entity.SysLog’ with value ‘1164549971505057794’ Cause: java.lang.IllegalArgumentException: argument type mismatch配置完问题2后,控制台输出再次打印上面的异常信息。此问题原因是插入数据时MyBatis-Plus为主键生成的Id值过长,需要配置主键生成策略。这问题解决也有两种方式:在主键性加上@TableId(value = “f_log_id”, type = IdType.AUTO),IdType有六个选项值,默认ID_WORKER,我们表使用键值自动递增,所以选AUTO在配置文件application.properties添加全局配置属性统一处理经过前面的配置后,junit方法执行成功,在库中插入了一条日志记录根据id查询控制台打印输入前面插入的 香港云主机日志内容信息根据内容模糊查询,这使用QueryWrapper条件构造器进行条件查询执行完成后,我们再通过上面根据id查询,可以看到控制台打印输入更新的日志内容信息执行完成后,我们再根据id查询,可以看到控制台没有打印输入日志内容看完上述内容,你们掌握如何集成与使用Spring Boot + Mybatis-Plus的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: Linux系统中怎么部署SpringBoot项目

这篇文章将为大家详细讲解有关Linux系统中怎么部署SpringBoot项目,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的 香港云主机了解。注意:无界面显示启动方式后面必须加&。关于Linux系统中怎么部署S…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/13 11:31
下一篇 08/13 11:31

相关推荐