【15】SpringBoot快速整合Mybatis&MybatisPlus

SpringBoot快速整合Mybatis&MybatisPlus

01、目标

整合mybatis和mybatis-plus实现数据库的增删改查 。

官方文档和学习资料

参考课程:https://www.kuangstudy.com/course/detail/1321004290617901058

mybatis-plus官方手册:https://mp.baomidou.com/guide/

02、整合mybatis

02-01、引入mybatis-plus依赖
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>
<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
注意:这个时候很多的刚搭建框架的时候就遇到的问题?如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q0M3nd2t-1658332051279)(assets/1624715371572.png)]

02-02、在application.yml进行配置数据源
1、新建一个applicaiton.yml
# 环境隔离
spring:
  profiles:
    active: dev

server:
  compression:
    # 请求gzip压缩
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
    min-response-size: 1024
  application:
    name: edu-front-web
  # 模板视图  thymeleaf
  thymeleaf:
    cache: false
    prefix: classpath:/templates/
    mode: HTML
    encoding: UTF-8
  # json的转换配置
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    locale: zh_CN
    generator:
      write-numbers-as-strings: true
      write-bigdecimal-as-plain: true

##mybatis的原生态支持
mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
  type-aliases-package: com.kuangstudy.entity
  
logging:
  level:
    root: debug
2、新建一个applicaiton-dev.yml
# 数据源的配置
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/kuangstudydb?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: mkxiaoer1986
    hikari:
      connection-timeout: 60000
      validation-timeout: 3000
      idle-timeout: 60000
      login-timeout: 5
      max-lifetime: 60000
      maximum-pool-size: 30
      minimum-idle: 10
      read-only: false

3、新建一个数据库和表
/*
Navicat MySQL Data Transfer

Source Server         : kuangstudy-boots
Source Server Version : 50734
Source Host           : 127.0.0.1:3306
Source Database       : kuangstudydb

Target Server Type    : MYSQL
Target Server Version : 50734
File Encoding         : 65001

Date: 2021-06-26 22:05:08
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for kss_user
-- ----------------------------
DROP TABLE IF EXISTS `kss_user`;
CREATE TABLE `kss_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nickname` varchar(100) DEFAULT NULL COMMENT '用户名',
  `password` varchar(100) DEFAULT NULL COMMENT '密码',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  `male` int(1) DEFAULT NULL COMMENT '性别 0 女 1 男 2保密',
  `user_intro` varchar(1000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of kss_user
-- ----------------------------

4、新建一个实体
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@TableName("kss_user")
public class User {
    // 用户编号
    @TableId(type = IdType.AUTO)
    private Integer id;
    // 用户昵称
    private String nickname;
    // 密码
    private String password;
    // 年龄
    private Integer age;
    // 性别 0 女 1 男 2保密
    private Integer male;
    // 用户介绍
    private String userIntro;
}

5、新建一个mapper
 public interface UserMapper extends BaseMapper<User> {
}

6、如何完成mybatis和spring融合呢?

在启动类上增加@MapperScan("com.kuangstudy.mapper") 即可,如下:

@SpringBootApplication
@MapperScan("com.kuangstudy.mapper")
public class KuangstudyBootsMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(KuangstudyBootsMybatisApplication.class, args);
    }

}
7、定义一个用户Service接口和实现类如下:

public interface UserService extends IService<User> {
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements  UserService{
}

8、测试用例
@SpringBootTest
class KuangstudyBootsMybatisApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    public void saveUser(){
        User user = new User();
        user.setId(1);
        user.setNickname("yykkxxxx");
        user.setPassword("1121455");
        user.setAge(34);
        user.setMale(1);
        user.setUserIntro("我是一个xxxx");
        userService.saveOrUpdate(user);
    }


    @Test
    public void getuserById(){
        User user = userService.getByUserId(1);
        System.out.println(user);
    }

}

03、基于xml的原生态的mybatis的支持

前提

在application.yml增加支持xml的方式

##mybatis的原生态支持
mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
  type-aliases-package: com.kuangstudy.entity
1、在UserMapper定义方法
public interface UserMapper extends BaseMapper<User> {

    User getByUserId(@Param("id") Integer id);
}

2、新建一个mapper.xml文件

在resources/mapper/UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuangstudy.mapper.UserMapper">

    <select id="getByUserId" resultType="com.kuangstudy.entity.User">
        SELECT id,
           nickname,
           password,
           age,
           male,
           user_intro as userIntro
        FROM kss_user
        WHERE id = #{id}
    </select>

</mapper>

3、UserService接口新建一个自定义的方法
package com.kuangstudy.service.user;

import com.baomidou.mybatisplus.extension.service.IService;
import com.kuangstudy.entity.User;

public interface UserService extends IService<User> {
    
    
    /**
     * @Author xuke
     * @Description 根据用户id查询用户信息
     * @Date 22:18 2021/6/26
     * @Param [id]
     * @return com.kuangstudy.entity.User
    **/
    User getByUserId(Integer id);
}

package com.kuangstudy.service.user;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kuangstudy.entity.User;
import com.kuangstudy.mapper.UserMapper;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements  UserService{

    /**
     * @Author xuke
     * @Description 根据用户id查询用户信息
     * @Date 22:18 2021/6/26
     * @Param [id]
     * @return com.kuangstudy.entity.User
     **/
    public User getByUserId(Integer id){
        return this.baseMapper.getByUserId(id);
    }
}

this.baseMapper:是UserMapper,可以不用注入了

4、测试
package com.kuangstudy;

import com.kuangstudy.entity.User;
import com.kuangstudy.mapper.UserMapper;
import com.kuangstudy.service.user.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class KuangstudyBootsMybatisApplicationTests {



    @Autowired
    private UserService userService;

    @Test
    public void saveUser(){
        User user = new User();
        user.setId(1);
        user.setNickname("yykkxxxx");
        user.setPassword("1121455");
        user.setAge(34);
        user.setMale(1);
        user.setUserIntro("我是一个xxxx");
        userService.saveOrUpdate(user);
    }


    @Test
    public void getuserById(){
        User user = userService.getByUserId(1);
        System.out.println(user);
    }

}

5、小结

说明mybatis-plus即支持注解+反射的实现方式

也支持原生基于xml的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值