1。SpringBoot整合MyBatis1。1整合案例 需求:整合SpringBoot和Mybatis,向数据库中查询数据。 项目结构: 1。1。1创建数据库和表创建数据库DROPDATABASEIFEXISTSCREATEDATABASEUSE创建表CREATETABLEmonster(idINTNOTNULLAUTOINCREMENT,ageINTNOTNULL,birthdayDATEDEFAULTNULL,emailVARCHAR(255)DEFAULTNULL,genderCHAR(1)DEFAULTNULL,nameVARCHAR(255)DEFAULTNULL,salaryDOUBLENOTNULL,PRIMARYKEY(id))CHARSETutf8; 插入测试数据: 1。1。2引入依赖 在pom。xml中引入mybatis及相关的依赖!导入SpringBoot父工程parentspringbootstarterparentartifactIdgroupIdorg。springframework。bootgroupIdversion2。5。3versionparentdependencies!webstarterdependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependency!mybatisstarterdependencygroupIdorg。mybatis。spring。bootgroupIdmybatisspringbootstarterartifactIdversion2。2。2versiondependency!mysql驱动,使用版本仲裁dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIddependency!配置处理器dependencygroupIdorg。springframework。bootgroupIdspringbootconfigurationprocessorartifactIddependency!lombokdependencygroupIdorg。projectlombokgroupIdlombokartifactIddependency!springbootteststarterdependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIddependency!druid数据源,也可以使用默认的数据源dependencygroupIdcom。alibabagroupIddruidartifactIdversion1。1。17versiondependencydependencies1。1。3配置数据源 在resourceapplication。yml中配置数据源,并完成SpringBoot项目启动测试spring:datasource:配置数据源url:jdbc:mysql:localhost:3306springbootmybatis?useSSLtrueuseUnicodetruecharacterEncodingUTF8username:rootpassword:123456driverclassname:com。mysql。cj。jdbc。Driverserver:port:9090 创建配置类,设置Druid数据源: 这里如果引入的依赖是druidstarter,可以直接在yml文件中配置packagecom。li。springboot。mybatis。importcom。alibaba。druid。pool。DruidDataSimportorg。springframework。boot。context。properties。ConfigurationPimportorg。springframework。context。annotation。Bimportorg。springframework。context。annotation。Cimportjavax。sql。DataSauthor李version1。0ConfigurationpublicclassDruidDataSourceConfig{ConfigurationProperties(spring。datasource)BeanpublicDataSourcedataSource(){DruidDataSourcedruidDataSourcenewDruidDataSource();returndruidDataS}}1。1。4指定mapper。xml路径 在application。yml文件中配置mybatis,指定要扫描的mapper。xml文件的路径 在ssm整合中,这一步也是在applicationContext。xml容器文件中指定mybatis:mapperlocations:classpath:mapper。xml指定要扫描的mapper。xml路径1。1。5代码实现 (1)创建JavaBeanMonster。java,用于表映射packagecom。li。springboot。mybatis。importlombok。AllArgsCimportlombok。Dimportlombok。NoArgsCimportjava。util。Dauthor李version1。0DataNoArgsConstructorAllArgsConstructorpublicclassMonster{privateIprivateIprivateDprivateSprivateSprivateSprivateD} (2)创建mapper接口,用于声明方法packagecom。li。springboot。mybatis。importcom。li。springboot。mybatis。bean。Mimportorg。apache。ibatis。annotations。Mauthor李version1。0使用注解mapper,就可以将mapper接口对象注入容器Mapper除了使用注解,也可以直接指定要扫描的包publicinterfaceMonsterMapper{根据id查询数据记录publicMonstergetMonsterById(Integerid);} (3)在resourcemapper目录下创建接口对应的mapper。xml文件,实现声明的方法?xmlversion1。0encodingUTF8?!DOCTYPEmapperPUBLICmybatis。orgDTDMapper3。0ENhttp:mybatis。orgdtdmybatis3mapper。dtdmappernamespacecom。li。springboot。mybatis。mapper。MonsterMapper!配置getMonsterById方法selectidgetMonsterByIdresultTypecom。li。springboot。mybatis。bean。MonsterSELECTFROMmonsterWHEREid{id}selectmapper (4)进行测试: 如果要写测试类,一定要写主程序packagecom。li。springboot。importcom。li。springboot。mybatis。bean。Mimportcom。li。springboot。mybatis。mapper。MonsterMimportorg。junit。jupiter。api。Timportorg。springframework。boot。test。context。SpringBootTimportjavax。annotation。Rauthor李version1。0SpringBootTestpublicclassApplicationTest{ResourceprivateMonsterMappermonsterM注入的实际上是它的代理类测试MonsterMapper接口是否可用TestpublicvoidgetMonsterMapper(){MonstermonstermonsterMapper。getMonsterById(1);System。out。println(monstermonster);}} 测试结果:成功从数据库中获取信息。 接下来的Service、Controller层和ssm没有多大区别,这里不再赘述1。1。6补充对mybatis的配置SpringBoot对mybatis的配置有两种方式: (1)使用传统方式配置,即使用mybatisconfig。xml。不过要先在application。yml文件中指定mybatis配置文件的路径。mybatis:configlocation:指定mybatisconfig。xml文件的路径 (2)直接使用application。yml文件进行配置,例如:mybatis:typealiasespackage:com。li。springboot。mybatis。bean指定别名configuration:logimpl:org。apache。ibatis。logging。stdout。StdOutImpl指定标准的日志输出两种方式的选择:如果配置比较简单,可以在yml中直接配置如果配置内容较多,可以单独地做一个配置文件1。2注意事项和使用细节 SpringBoot中日期默认是格林尼治标准时间,和中国标准时相差8小时,可以通过注解JsonFormat解决此问题: 其中pattern表示日期格式,timezone表示时区,GMT是格林尼治时间2。SpringBoot整合MyBatisPlus2。1MyBatisPlus基本介绍 MyBatisPlus官方文档MyBatisPlus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。强大的CRUD操作:内置了通用Mapper、通用Service,通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类需求。2。2整合案例 需求:整合SpringBoot和MyBatisPlus,向数据库中查询数据。2。2。1创建数据库和表 略,表结构同上。 2。2。2引入依赖 pom。xml文件中引入mybatisplusstarter和其他依赖。!导入SpringBoot父工程parentspringbootstarterparentartifactIdgroupIdorg。springframework。bootgroupIdversion2。5。3versionparent!引入必要依赖dependencies!webstarterdependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependency!MyBatisplusstarterdependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。4。3versiondependency!mysql驱动dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIddependency!配置处理器dependencygroupIdorg。springframework。bootgroupIdspringbootconfigurationprocessorartifactIddependency!lombokdependencygroupIdorg。projectlombokgroupIdlombokartifactIddependency!springbootteststarterdependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIddependency!druid数据源,也可以使用默认的数据源dependencygroupIdcom。alibabagroupIddruidartifactIdversion1。1。17versiondependencydependencies2。2。3配置数据源 (1)在resourceapplication。yml中配置数据源server:port:9090spring:datasource:driverclassname:com。mysql。cj。jdbc。Driverurl:jdbc:mysql:localhost:3306springbootmybatisplus?useSSLtrueuseUnicodetruecharacterEncodingUTF8username:rootpassword:123456 (2)创建配置类,设置Druid数据源:这一步和mybatis整合相同,见上1。1。3操作2。2。4代码实现 (1)创建JavaBeanMonster。java,用于表映射(同1。1。4的操作,略) (2)创建mapper接口,用于声明方法 相比于mybatis需要自己声明方法,MP提供了一个通用的BaseMapper,有很多通用的方法,通过继承,我们就可以直接使用,简化开发packagecom。li。springboot。mybatisplus。importcom。baomidou。mybatisplus。core。mapper。BaseMimportcom。li。springboot。mybatisplus。bean。Mimportorg。apache。ibatis。annotations。Mauthor李version1。0BaseMapper是MyBatisPlus内置的通用Mapper,提供了很多的方法如果它提供的方法不能满足业务需求,我们可以在这里开发新的方法MapperpublicinterfaceMonsterMapperextendsBaseMapperMonster{} 如果在这一步没有自定义的接口方法,就不需要使用Mapper。xml文件实现声明 (3)开发Service MP也提供了一个通用的Service接口,里面也提供了很多方法packagecom。li。springboot。mybatisplus。importcom。baomidou。mybatisplus。extension。service。ISimportcom。li。springboot。mybatisplus。bean。Mauthor李version1。01。在mybatis中,是在MonsterService声明方法,然后在其实现类实现2。而在MyBatisPlus中,我们可以通过继承父接口:IService,从而使用里面的很多方法3。如果它提供的方法不能满足业务需求,再开发新的方法ServicepublicinterfaceMonsterServiceextendsIServiceMonster{} 注意:如果在业务Service接口声明了自定义方法,通常会创建一个实现类实现接口方法,问题是:由于业务Service接口继承了IService接口,那么业务Service的实现类要同时实现两个接口的方法才行,非常麻烦。 解决方案是:业务实现类通过继承ServiceImpl类解决问题。ServiceImpl类是MyBatisPlus提供的一个类,它已经实现了IService的方法。这样业务实现类就只需要实现业务Service自定义的方法。 业务实现类MonsterServiceImpl:packagecom。li。springboot。mybatisplus。service。importcom。baomidou。mybatisplus。extension。service。impl。ServiceIimportcom。li。springboot。mybatisplus。bean。Mimportcom。li。springboot。mybatisplus。mapper。MonsterMimportcom。li。springboot。mybatisplus。service。MonsterSauthor李version1。0publicclassMonsterServiceImplextendsServiceImplMonsterMapper,MonsterimplementsMonsterService{通过继承ServiceImpl,这个实现类中就只用实现业务Service自定义的方法} controller层的实现和mybatis的大同小异,这里就不写了2。2。5补充对MP的配置MyBatisPlus的配置和MyBatis配置几乎没有区别,在SpringBoot中,同样可以通过如下方式进行配置: (1)使用传统的配置文件配置,不过要先在application。yml文件中指定配置文件的路径:mybatisplus:configlocation:xxx指定mp配置文件的路径 (2)直接使用application。yml文件进行配置,例如:mybatisplus:configuration:进行mybatisplus配置,配置项和mybatis一样logimpl:org。apache。ibatis。logging。stdout。StdOutImplMapperScan注解(修饰于主程序)可以替代Mapper(修饰于mapper接口),basePackages属性可以接收多个值2。3注意事项和使用细节 MyBatisPlus的注解 (1)TableName 描述:表名注解,标识实体类对应的表。如果实体类的类名和表名一致,则该注解可以省略,否则需要通过TableName指定表名