温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中怎么整合Mybatis组件

发布时间:2021-08-12 11:27:40 来源:亿速云 阅读:156 作者:Leah 栏目:编程语言

springboot中怎么整合Mybatis组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Spring的优点分析

Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

Spring的缺点分析

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

引入mybatis组件

pom.xml中加入

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version></dependency>

application.properties中加入

#dateSourcespring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=falsespring.datasource.username=rootspring.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。

建表语句

CREATE TABLE USER_INFO( user_id DECIMAL(10) PRIMARY KEY NOT NULL, user_name VARCHAR(20) DEFAULT "" NOT NULL);CREATE UNIQUE INDEX USER_INFO_user_id_uindex ON USER_INFO (user_id);ALTER TABLE USER_INFO COMMENT = '用户基本信息表';

插入数据

INSERT INTO test.user_info (user_id, user_name) VALUES (1, '特朗普');INSERT INTO test.user_info (user_id, user_name) VALUES (2, '唐纳德');

现在的项目路径为

在SpringBoot的入口类中加 @MapperScan 注解,以扫描 DAO 类,不用在每个dao接口加个@Mapper 注解。

package com.example;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.example.dao")public class DemoApplication { public static void main(String[] args) {  SpringApplication.run(DemoApplication.class, args); }}

注:如果没有分拆项目成微服务架构,或分布式架构,application主类中的@SpringBootApplication自动会扫描本包中的@Controller,@Service,@Resource等,是不需要浪费另一行@ComponentScan注解,配置路径的。

UserController.java

package com.example.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.example.service.IUserService;@Controller@RequestMapping("user")public class UserController { @Autowired private IUserService userService; @RequestMapping("/queryUser") @ResponseBody void queryUser() {  this.userService.queryUser(); }}

IUserService.java

package com.example.service;public interface IUserService { void queryUser();}

UserServiceIml.java

package com.example.service;import com.example.dao.UserDao;import com.example.entity.UserEntity;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.List;@Service("userService")public class UserServiceIml implements IUserService { @Resource private UserDao userDao; @Override public void queryUser() {  List<UserEntity> userList = this.userDao.queryUser();  System.out.println("================");  System.out.println(userList);  System.out.println("================"); }}

注:如果是SSM架构过来的,这个@Resource注解可能比较陌生,因为我估计会和我之前一样用@Autowired,但是我是没有在dao层用 @Repository 注解的,之前用了在主类用了@MapperScan自动去扫描所有的dao,所以不能再用之前的@Autowired。

UserDao.java

package com.example.dao;import com.example.entity.UserEntity;import java.util.List;public interface UserDao { List<UserEntity> queryUser();}

UserEntity.java

package com.example.entity;public class UserEntity { private long userId; private String userName; public long getUserId() {  return userId; } public void setUserId(long userId) {  this.userId = userId; } public String getUserName() {  return userName; } public void setUserName(String userName) {  this.userName = userName; }  @Override public String toString() {  return "UserEntity{" +    "userId=" + userId +    ", userName='" + userName + '\'' +    '}'; }}

关于springboot中怎么整合Mybatis组件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI