springboot快速整合Mybatis组件的方法(推荐)
SpringBoot简介
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。
原有Spring优缺点分析
Spring的优点分析
Spring是Java企业版(JavaEnterpriseEdition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的EnterpriseJavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(PlainOldJavaObject,POJO)实现了EJB的功能。
Spring的缺点分析
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
MyBatis
@
简介
优点
最大的优点是SQL语句灵活,适合调优情景,业务复杂情景
劣势
最大的劣势是不同数据库之间的迁移
引入mybatis组件
pom.xml中加入
mysql mysql-connector-java org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1
application.properties中加入
#dateSource spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root #mybatis #下划线转驼峰开启 mybatis.configuration.map-underscore-to-camel-case=true #mapper扫描位置 mybatis.mapper-locations=classpath:mapper/*.xml
需要说明的是,我引入的mysql驱动为com.mysql.cj.jdbc.Driver,而不是com.mysql.jdbc.Driver。以下是一些参数的说明;
- serverTimezone:该驱动需要指定某时区。
- useUnicode:开启指定编码。
- characterEncoding:指定读取数据库的编码,因为项目采用UTF-8,存取数据库信息时保持一致。
- useSSL:是否建立SSL连接,我显示选的否,因为这要为服务器证书验证提供信任库,暂时没条件。
代码实战
本地的mysql版本为5.7.20。
建表语句
CREATETABLEUSER_INFO ( user_idDECIMAL(10)PRIMARYKEYNOTNULL, user_nameVARCHAR(20)DEFAULT""NOTNULL ); CREATEUNIQUEINDEXUSER_INFO_user_id_uindexONUSER_INFO(user_id); ALTERTABLEUSER_INFOCOMMENT='用户基本信息表';
插入数据
INSERTINTOtest.user_info(user_id,user_name)VALUES(1,'特朗普'); INSERTINTOtest.user_info(user_id,user_name)VALUES(2,'唐纳德');
现在的项目路径为
在SpringBoot的入口类中加@MapperScan注解,以扫描DAO类,不用在每个dao接口加个@Mapper注解。
packagecom.example; importorg.mybatis.spring.annotation.MapperScan; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.example.dao") publicclassDemoApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(DemoApplication.class,args); } }
注:如果没有分拆项目成微服务架构,或分布式架构,application主类中的@SpringBootApplication自动会扫描本包中的@Controller,@Service,@Resource等,是不需要浪费另一行@ComponentScan注解,配置路径的。
UserController.java
packagecom.example.controller; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.ResponseBody; importcom.example.service.IUserService; @Controller @RequestMapping("user") publicclassUserController{ @Autowired privateIUserServiceuserService; @RequestMapping("/queryUser") @ResponseBody voidqueryUser(){ this.userService.queryUser(); } }
IUserService.java
packagecom.example.service; publicinterfaceIUserService{ voidqueryUser(); }
UserServiceIml.java
packagecom.example.service; importcom.example.dao.UserDao; importcom.example.entity.UserEntity; importorg.springframework.stereotype.Service; importjavax.annotation.Resource; importjava.util.List; @Service("userService") publicclassUserServiceImlimplementsIUserService{ @Resource privateUserDaouserDao; @Override publicvoidqueryUser(){ ListuserList=this.userDao.queryUser(); System.out.println("================"); System.out.println(userList); System.out.println("================"); } }
注:如果是SSM架构过来的,这个@Resource注解可能比较陌生,因为我估计会和我之前一样用@Autowired,但是我是没有在dao层用@Repository注解的,之前用了在主类用了@MapperScan自动去扫描所有的dao,所以不能再用之前的@Autowired。
UserDao.java
packagecom.example.dao; importcom.example.entity.UserEntity; importjava.util.List; publicinterfaceUserDao{ ListqueryUser(); }
UserEntity.java
packagecom.example.entity; publicclassUserEntity{ privatelonguserId; privateStringuserName; publiclonggetUserId(){ returnuserId; } publicvoidsetUserId(longuserId){ this.userId=userId; } publicStringgetUserName(){ returnuserName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } @Override publicStringtoString(){ return"UserEntity{"+ "userId="+userId+ ",userName='"+userName+'\''+ '}'; } }
如果你运行不成功,请对比引入的包的版本,和数据库配置是否是根据你本地的,顺便看看注解是否和文中一样。
效果图如下;
注:如果是跟着本教程来的,因为一开始就引入了springsecurity,而新增的路径不在刚才的权限中,所以我给zs用户改成了user下的皆可访问。如果没有跟着之前配置springsecurity,无需理会如下内容
//http.authorizeRequests().antMatchers("/user/addUser").hasRole("AAA") http.authorizeRequests().antMatchers("/user/**").hasRole("AAA")
总结
以上所述是小编给大家介绍的springboot快速整合Mybatis组件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。