1、在使用Spring整合ORM组件的过程中,为了达到简化的目的,往往会进行大量的配置。利用SpringBoot可以进一步实现配置的简化。SpringBoot整合MyBatis开发框架,MyBatis是一款常用并且配置极为简单的ORM开发框架。其与Spring结合后,可以利用Spring的特征实现DAO接口的自动配置。在SpringBoot中,又对MyBatis框架的整合进行了进一步简化。 修改pom。xml配置文件,在项目中引入mybatisspringbootstarter依赖支持库,切记也需要数据库链接池的支持的哦。1lt;?xmlversion1。0encodingUTF8?2projectxmlnshttp:maven。apache。orgPOM4。0。03xmlns:xsihttp:www。w3。org2001XMLSchemainstance4xsi:schemaLocationhttp:maven。apache。orgPOM4。0。05https:maven。apache。orgxsdmaven4。0。0。xsd67modelVersion4。0。0modelVersion8parent9!springbootstarterparent就是官方给出的快速构建SpringBoot项目的公共父pom。xml配置文件支持。10groupIdorg。springframework。bootgroupId11springbootstarterparentartifactId12version2。3。4。RELEASEversion13relativePath!lookupparentfromrepository14parent1516groupIdcom。biegroupId17springboot01artifactId18version0。0。1SNAPSHOTversion19namespringboot01name20descriptionDemoprojectforSpringBootdescription2122properties23java。version1。8java。version24mavenjarplugin。version3。1。1mavenjarplugin。version25properties2627dependencies28dependency29groupIdorg。springframework。bootgroupId30springbootstarterwebartifactId31dependency3233dependency34groupIdorg。springframework。bootgroupId35springbootstartertestartifactId36scopetestscope37exclusions38exclusion39groupIdorg。junit。vintagegroupId40junitvintageengineartifactId41exclusion42exclusions43dependency44!https:mvnrepository。comartifactmysqlmysqlconnectorjava45dependency46groupIdmysqlgroupId47mysqlconnectorjavaartifactId48!version5。1。12version49dependency50dependency51groupIdorg。springframework。bootgroupId52springbootconfigurationprocessorartifactId53optionaltrueoptional54dependency5556!引入Druid数据源依赖:https:mvnrepository。comartifactcom。alibabadruid57dependency58groupIdcom。alibabagroupId59druidartifactId60version1。1。9version61dependency62!导入MyBatis的ORM开发包。63dependency64groupIdorg。mybatis。spring。bootgroupId65mybatisspringbootstarterartifactId66version1。3。1version67dependency68!https:mvnrepository。comartifactorg。mybatismybatis69dependency70groupIdorg。mybatisgroupId71mybatisartifactId72version3。4。6version73dependency74!mybatis的启动器75dependency76groupIdorg。mybatis。spring。bootgroupId77mybatisspringbootstarterartifactId78version2。1。1version79dependency80dependency81groupIdorg。springframework。bootgroupId82springbootstarterjdbcartifactId83dependency84dependencies8586build87plugins88plugin89groupIdorg。springframework。bootgroupId90springbootmavenpluginartifactId91plugin92plugins93build9495project 数据表结构,如下所示: 注意:如果数据表字段两个英文单词之间是下划线连接的,但是你的实体类是驼峰命名法,此时就需要进行配置,数据库字段是你下划线分隔,但是bean中的字段是驼峰命名的,如username和userName,导致无法匹配。如果是通过xml文件来配置的话,只需要开启驼峰命名转换,settingnamemapUnderscoreToCamelCasevaluetrue,在srcmainresourcesmybatismybatis。cfg。xml里面配置即可。12NavicatPremiumDataTransfer34SourceServer:localhost5SourceServerType:MySQL6SourceServerVersion:507247SourceHost:localhost:33068SourceSchema:biehl910TargetServerType:MySQL11TargetServerVersion:5072412FileEncoding:650011314Date:1511202013:34:52151617SETNAMESutf8mb4;18SETFOREIGNKEYCHECKS0;192021Tablestructureforuserinfo2223DROPTABLEIFEXISTSuserinfo;24CREATETABLEuserinfo(25useridint(11)NOTNULLAUTOINCREMENTCOMMENT用户编号,26useraccountvarchar(15)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户账号,27userpwvarchar(15)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户密码,28usernumbervarchar(15)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户手机号,29usernamevarchar(10)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户姓名,30userageint(11)DEFAULTNULLCOMMENT用户年龄,31usersexvarchar(5)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户性别,32usermarkvarchar(5)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT用户标志,33createtimedatetime(0)DEFAULTCURRENTTIMESTAMPCOMMENT用户创建时间,34issyncint(3)DEFAULT0COMMENT用户标识,35ismoneyvarchar(255)CHARACTERSETutf8COLLATEutf8generalciDEFAULTNULLCOMMENT是否缴纳押金,36PRIMARYKEY(userid)USINGBTREE,37INDEXuserid(userid)USINGBTREE38)ENGINEInnoDBAUTOINCREMENT42CHARACTERSETutf8COLLATEutf8generalciCOMMENT用户信息表ROWFORMATDynamic;3940SETFOREIGNKEYCHECKS1; 创建一个po实体类,方便数据传输,如下所示:1packagecom。bie。po;23publicclassUserInfo{45privateIntegeruserId;用户编号6privateStringuserAccount;用户账号7privateStringuserPw;用户密码8privateStringuserNumber;用户学号9privateStringuserName;用户姓名10privateIntegeruserAge;用户年龄11privateStringuserSex;用户性别12privateStringuserMark;用户标识,可以使用一张表,完成管理员和用户1314privateStringisMoney;1516publicIntegergetUserId(){17returnuserId;18}1920publicvoidsetUserId(IntegeruserId){21this。userIduserId;22}2324publicStringgetUserAccount(){25returnuserAccount;26}2728publicvoidsetUserAccount(StringuserAccount){29this。userAccountuserAccount;30}3132publicStringgetUserPw(){33returnuserPw;34}3536publicvoidsetUserPw(StringuserPw){37this。userPwuserPw;38}3940publicStringgetUserNumber(){41returnuserNumber;42}4344publicvoidsetUserNumber(StringuserNumber){45this。userNumberuserNumber;46}4748publicStringgetUserName(){49returnuserName;50}5152publicvoidsetUserName(StringuserName){53this。userNameuserName;54}5556publicIntegergetUserAge(){57returnuserAge;58}5960publicvoidsetUserAge(IntegeruserAge){61this。userAgeuserAge;62}6364publicStringgetUserSex(){65returnuserSex;66}6768publicvoidsetUserSex(StringuserSex){69this。userSexuserSex;70}7172publicStringgetUserMark(){73returnuserMark;74}7576publicvoidsetUserMark(StringuserMark){77this。userMarkuserMark;78}7980publicStringgetIsMoney(){81returnisMoney;82}8384publicvoidsetIsMoney(StringisMoney){85this。isMoneyisMoney;86}8788Override89publicStringtoString(){90returnUserInfo〔userIduserId,userAccountuserAccount,userPwuserPw,userNumber91userNumber,userNameuserName,userAgeuserAge,userSexuserSex92,userMarkuserMark,isMoneyisMoney〕;93}9495} 在srcmainresources目录中创建mybatismybatis。cfg。xml配置文件。如果要开启驼峰命名转换,在这里开启即可,如下所示: 如果在application。properties中开启转换的话,使用mybatis。configuration。mapunderscoretocamelcasetrue配置即可。1lt;?xmlversion1。0encodingUTF8?2!DOCTYPEconfigurationPUBLICmybatis。orgDTDConfig3。0EN3http:mybatis。orgdtdmybatis3config。dtd4!进行Mybatis的相应环境的属性定义5configuration67settings8!通过xml文件来配置的话,只需要开启驼峰命名转换9settingnamemapUnderscoreToCamelCasevaluetrue10settings1112configuration 或者搞个配置类,如果数据库表字段Column无法自动映射到相对应的实体类属性上,我们可以在config包下新建一个自动配置类MybatisConfig,开始驼峰命名规则。 MyBatis配置文件开启驼峰命名映射1packagecom。bie。config;23importorg。apache。ibatis。session。Configuration;4importorg。mybatis。spring。boot。autoconfigure。ConfigurationCustomizer;5importorg。springframework。context。annotation。Bean;678Configuration9publicclassMybatisConfig{1011注册到容器中12Bean13publicConfigurationCustomizerconfigurationCustomizer(){14returnnewConfigurationCustomizer(){15Override16publicvoidcustomize(Configurationconfiguration){17开启驼峰命名规则,是否启用下划线与驼峰式命名规则的映射18configuration。setMapUnderscoreToCamelCase(true);1920}21};22}23} 修改application。yml配置文件,追加MyBatis配置,如下所示:1配置当前要使用的数据源的操作类型2spring。datasource。typecom。alibaba。druid。pool。DruidDataSource3配置Mysql的驱动程序类4spring。datasource。driverclassnamecom。mysql。jdbc。Driver5数据库连接地址6spring。datasource。urljdbc:mysql:127。0。0。1:3306biehl?characterEncodingUTF8serverTimezoneUTC7数据库用户名称8spring。datasource。usernameroot9数据库密码10spring。datasource。password12345611进行数据库链接池的配置,数据库最小维持连接数12spring。datasource。dbcp2。minidle113数据库初始化提供的连接数14spring。datasource。dbcp2。initialsize115数据库最大维持连接数16spring。datasource。dbcp2。maxtotal10017等待连接获取的最大超时时间18spring。datasource。dbcp2。maxwaitmillis3000192021后台打印sql语句22mybatis。configuration。logimplorg。apache。ibatis。logging。stdout。StdOutImpl23指定sql映射文件位置,mapper下的所有。xml文件都是映射文件24mybatis。mapperlocationsclasspath:mapperMapper。xml25Mybatis配置文件所在的路径26mybatis。configlocationclasspath:mybatismybatis。cfg。xml27定义所有操作类的别名所在包28mybatis。typealiasespackagecom。bie。po 搞几个Dao层、Service层、Controller层的接口或者类,如下所示: 注意:如果不想每次都在mapper接口上添加Mapper注解,可以在主启动类上通过添加MapperScan注解来批量扫描指定包下的所有mapper接口。1packagecom。bie。dao;23importjava。util。List;45importorg。apache。ibatis。annotations。Mapper;6importorg。apache。ibatis。annotations。Select;78importcom。bie。po。UserInfo;910Mapper需要引入Mybatis的依赖包11publicinterfaceUserInfoDao{121314查询全部用户信息1516return1718Select(valueselectfromuserinfo)19publicListUserInfofindAll();查询全部用户信息2021} Service层的接口和实现类代码,如下所示:1packagecom。bie。service;23importjava。util。List;45importcom。bie。po。UserInfo;67publicinterfaceUserInfoService{89publicListUserInfofindAll();10}1packagecom。bie。service。impl;23importjava。util。List;45importorg。springframework。beans。factory。annotation。Autowired;6importorg。springframework。stereotype。Service;78importcom。bie。dao。UserInfoDao;9importcom。bie。po。UserInfo;10importcom。bie。service。UserInfoService;1112Service13publicclassUserInfoServiceImplimplementsUserInfoService{1415Autowired16privateUserInfoDaouserInfoDao;1718Override19publicListUserInfofindAll(){20returnthis。userInfoDao。findAll();21}2223} 控制层的代码,如下所示:1packagecom。bie。controller;23importjava。util。List;45importorg。springframework。beans。factory。annotation。Autowired;6importorg。springframework。stereotype。Controller;7importorg。springframework。web。bind。annotation。RequestMapping;8importorg。springframework。web。bind。annotation。ResponseBody;910importcom。bie。po。UserInfo;11importcom。bie。service。UserInfoService;1213Controller14publicclassUserInfoController{1516Autowired17privateUserInfoServiceuserInfoService;1819RequestMapping(valuefindAll)20ResponseBody21publicListUserInfofindAll(){22ListUserInfofindAllthis。userInfoService。findAll();23returnfindAll;24}2526} 项目启动类,如下所示:1packagecom。bie;23importorg。mybatis。spring。annotation。MapperScan;4importorg。springframework。boot。SpringApplication;5importorg。springframework。boot。autoconfigure。SpringBootApplication;67SpringBootApplication8MapperScan(valuecom。bie。dao)9publicclassSpringboot01Application{1011publicstaticvoidmain(String〔〕args){12SpringApplication。run(Springboot01Application。class,args);13}1415} 通过Postman测试一下,自己写的接口,看看好使不,如下所示: 项目结构,如下所示: 2、JPA是官方推出的Java持久层操作标准(现主要使用Hibernate实现),使用SpringData技术和JpaRepository接口技术,也可以达到简化数据层的目的。要在SpringBoot中使用SpringDataJPA,需要springbootstarterdatajpa依赖库的支持。 修改pom。xml配置文件,引入相关依赖包,如下所示:1lt;?xmlversion1。0encodingUTF8?2projectxmlnshttp:maven。apache。orgPOM4。0。03xmlns:xsihttp:www。w3。org2001XMLSchemainstance4xsi:schemaLocationhttp:maven。apache。orgPOM4。0。05https:maven。apache。orgxsdmaven4。0。0。xsd6modelVersion4。0。0modelVersion7parent8groupIdorg。springframework。bootgroupId9springbootstarterparentartifactId10version2。3。5。RELEASEversion11relativePath!lookupparentfromrepository12parent13groupIdcom。examplegroupId14demoartifactId15version0。0。1SNAPSHOTversion16namedemoname17descriptionDemoprojectforSpringBootdescription1819properties20java。version1。8java。version21mavenjarplugin。version3。1。1mavenjarplugin。version22properties2324dependencies25dependency26groupIdorg。springframework。bootgroupId27springbootstarterwebartifactId28dependency2930dependency31groupIdorg。springframework。bootgroupId32springbootstartertestartifactId33scopetestscope34exclusions35exclusion36groupIdorg。junit。vintagegroupId37junitvintageengineartifactId38exclusion39exclusions40dependency4142!mysql驱动包43dependency44groupIdmysqlgroupId45mysqlconnectorjavaartifactId46dependency4748!druid连接池49dependency50groupIdcom。alibabagroupId51druidartifactId52version1。1。10version53dependency5455dependency56groupIdorg。springframework。bootgroupId57springbootstarterdatajpaartifactId58dependency59dependency60groupIdorg。springframework。bootgroupId61springbootstartercacheartifactId62dependency63dependency64groupIdorg。hibernategroupId65hibernateehcacheartifactId66dependency67dependencies6869build70plugins71plugin72groupIdorg。springframework。bootgroupId73springbootmavenpluginartifactId74plugin75plugins76resources77resource78directorysrcmainresourcesdirectory79includes80include。propertiesinclude81include。ymlinclude82include。xmlinclude83include。p12include84include。htmlinclude85include。jpginclude86include。pnginclude87includes88resource89resources90build9192project 创建UserInfo实体类,如下所示:1packagecom。demo。po;23importjavax。persistence。Cacheable;4importjavax。persistence。Column;5importjavax。persistence。Entity;6importjavax。persistence。GeneratedValue;7importjavax。persistence。GenerationType;8importjavax。persistence。Id;910Cacheable()11Entity(nameuserinfo)12publicclassUserInfo{1314Id()15Column(nameuserid)16GeneratedValue(strategyGenerationType。IDENTITY)根据名称引用配置的主键生成器17privateIntegeruserId;用户编号1819Column(nameuseraccount)20privateStringuserAccount;用户账号2122Column(nameuserpw)23privateStringuserPw;用户密码2425Column(nameusernumber)26privateStringuserNumber;用户学号2728Column(nameusername)29privateStringuserName;用户姓名3031Column(nameuserage)32privateIntegeruserAge;用户年龄3334Column(nameusersex)35privateStringuserSex;用户性别3637Column(nameusermark)38privateStringuserMark;用户标识,可以使用一张表,完成管理员和用户3940Column(nameismoney)41privateStringisMoney;4243publicIntegergetUserId(){44returnuserId;45}4647publicvoidsetUserId(IntegeruserId){48this。userIduserId;49}5051publicStringgetUserAccount(){52returnuserAccount;53}5455publicvoidsetUserAccount(StringuserAccount){56this。userAccountuserAccount;57}5859publicStringgetUserPw(){60returnuserPw;61}6263publicvoidsetUserPw(StringuserPw){64this。userPwuserPw;65}6667publicStringgetUserNumber(){68returnuserNumber;69}7071publicvoidsetUserNumber(StringuserNumber){72this。userNumberuserNumber;73}7475publicStringgetUserName(){76returnuserName;77}7879publicvoidsetUserName(StringuserName){80this。userNameuserName;81}8283publicIntegergetUserAge(){84returnuserAge;85}8687publicvoidsetUserAge(IntegeruserAge){88this。userAgeuserAge;89}9091publicStringgetUserSex(){92returnuserSex;93}9495publicvoidsetUserSex(StringuserSex){96this。userSexuserSex;97}9899publicStringgetUserMark(){100returnuserMark;101}102103publicvoidsetUserMark(StringuserMark){104this。userMarkuserMark;105}106107publicStringgetIsMoney(){108returnisMoney;109}110111publicvoidsetIsMoney(StringisMoney){112this。isMoneyisMoney;113}114115Override116publicStringtoString(){117returnUserInfo〔userIduserId,userAccountuserAccount,userPwuserPw,userNumber118userNumber,userNameuserName,userAgeuserAge,userSexuserSex119,userMarkuserMark,isMoneyisMoney〕;120}121122} 创建UserDao,然后继承JpaRepositoryUserInfo,Integer,此时就可以使用写好的方法了,不用自己再额外写接口和实现,如下所示:1packagecom。demo。dao;23importorg。springframework。data。jpa。repository。JpaRepository;45importcom。demo。po。UserInfo;6789author继承JpaRepository包含全部的基础CURD操作101112publicinterfaceUserDaoextendsJpaRepositoryUserInfo,Integer{1314} 然后定义Service接口和Service接口实现,如下所示:1packagecom。demo。service;23importjava。util。List;45importcom。demo。po。UserInfo;67publicinterfaceUserService{89publicListUserInfofindAll();10}1packagecom。demo。service。impl;23importjava。util。List;45importorg。springframework。beans。factory。annotation。Autowired;6importorg。springframework。stereotype。Service;78importcom。demo。dao。UserDao;9importcom。demo。po。UserInfo;10importcom。demo。service。UserService;1112Service13publicclassUserServiceImplimplementsUserService{1415Autowired16privateUserDaouserDao;1718Override19publicListUserInfofindAll(){2021returnuserDao。findAll();22}2324} 然后搞一个Controller,作为接口访问的入口,如下所示:1packagecom。demo。controller;23importjava。util。List;45importorg。springframework。beans。factory。annotation。Autowired;6importorg。springframework。stereotype。Controller;7importorg。springframework。web。bind。annotation。RequestMapping;8importorg。springframework。web。bind。annotation。ResponseBody;910importcom。demo。po。UserInfo;11importcom。demo。service。UserService;1213Controller14publicclassSpringBootController{1516Autowired17privateUserServiceuserService;1819RequestMapping(valuefindAll)20ResponseBody21publicListUserInfofindAll(){22ListUserInfofindAlluserService。findAll();23returnfindAll;24}2526} 修改程序启动主类,追加Repository扫描配置。如果使用JpaRepository实现了DAO接口的自动实现。需要注意的是,如果想启用Repository配置,则需要在程序启动主类时使用EnableJpaRepositories注解配置扫描包,而后才可以正常使用。1packagecom。demo;23importorg。springframework。boot。SpringApplication;4importorg。springframework。boot。autoconfigure。SpringBootApplication;5importorg。springframework。data。jpa。repository。config。EnableJpaRepositories;67SpringBootApplication启动Springboot程序,而后自带子包扫描8EnableJpaRepositories(basePackagescom。demo。dao)9publicclassDemoApplication{1011publicstaticvoidmain(String〔〕args){12启动Springboot程序13SpringApplication。run(DemoApplication。class,args);14}1516} 修改application。properties,使用Druid作为数据源连接池,如下所示:1mysql的数据库驱动2spring。datasource。driverclassnamecom。mysql。jdbc。Driver3mysql的链接4spring。datasource。urljdbc:mysql:localhost:3306biehl5mysql的账号6spring。datasource。usernameroot7mysql的密码8spring。datasource。password123456910druid连接池的配置11spring。datasource。typecom。alibaba。druid。pool。DruidDataSource1213SpringDataJPA,此配置可以在实体类中使用注解来创建数据表,开启正向工程14spring。jpa。hibernate。ddlautoupdate15在控制台打印sql语句16spring。jpa。showsqltrue 使用postman进行接口调用,如下所示: 最主要的是给自己增加知识的储备,有备无患。最后给大家分享Spring系列的学习笔记和面试题,包含spring面试题、springcloud面试题、springboot面试题、spring教程笔记、springboot教程笔记、最新阿里巴巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档。私信博主(666)领取,祝大家更上一层楼!!!