springboot整合mybatis

十二 2022年05月14日 1237 4

前言

上篇文章介绍了springboot整合JPA,点击查看springboot整合JPA,使用起来非常的方便,但是针对于现在市面上大多数的项目,使用的还是基础的mybatis进行数据库的增删改查。

下面介绍springboot使用mybatis操作mysql数据库。

创建数据库

首先 我们创建一张表

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50721
 Source Host           : localhost:3306
 Source Schema         : learn-springboot

 Target Server Type    : MySQL
 Target Server Version : 50721
 File Encoding         : 65001

 Date: 14/05/2022 10:41:17
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `id` bigint(20) NOT NULL,
  `user_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `user_password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

后台

创建项目,在pom文件添加依赖

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

在resources文件夹下新建mybatis文件夹,新建mybatis的配置文件mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer"/>
        <typeAlias alias="Long" type="java.lang.Long"/>
        <typeAlias alias="HashMap" type="java.util.HashMap"/>
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
        <typeAlias alias="ArrayList" type="java.util.ArrayList"/>
        <typeAlias alias="LinkedList" type="java.util.LinkedList"/>
    </typeAliases>
</configuration>

application配置文件添加mybatis和mysql配置

server.port=8081

# mysql
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库地址
spring.datasource.url=jdbc:mysql://localhost:3306/learn-springboot?characterEncoding=utf8&useSSL=false
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=123456

# 检查 mybatis 配置是否存在,一般命名为 mybatis-config.xml
mybatis.check-config-location =true
# 配置文件位置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
# mapper xml 文件地址
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
# 日志级别
logging.level.com.world.lzh.dao=DEBUG

目录结构

image-20220514113655145

controller

package com.world.lzh.controller;

import com.world.lzh.entity.User;
import com.world.lzh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author lzh
 * @Date 2022/5/14 - 10:48
 * @Description
 * @Version 1.0.0
 **/
@RestController
@RequestMapping("/api")
public class IndexController {

    @Autowired
    private UserService userService;

    @PostMapping("/selectUser")
    public List<User> selectUser(@RequestBody User user) {
        return userService.selectUser(user);
    }

    @PostMapping("/insertUser")
    public String insertUser(@RequestBody User user) {
        return userService.insertUser(user);
    }

    @PostMapping("/updateUser")
    public String updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }
}

entity实体

package com.world.lzh.entity;

import lombok.Data;

/**
 * @Author lzh
 * @Date 2022/5/14 - 10:48
 * @Description
 * @Version 1.0.0
 **/
@Data
public class User {
    private Long id;
    private String userName;
    private String userPassword;
}

service层

package com.world.lzh.service;

import com.world.lzh.dao.UserDao;
import com.world.lzh.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author lzh
 * @Date 2022/5/14 - 10:49
 * @Description
 * @Version 1.0.0
 **/
@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public List<User> selectUser(User user) {
        List<User> userList = userDao.selectUser(user);
        return userList;
    }

    public String insertUser(User user) {
        int result = userDao.insertUser(user);
        return result > 0 ? "添加成功" : "添加失败";
    }

    public String updateUser(User user) {
        int result = userDao.updateUser(user);
        return result > 0 ? "修改成功" : "修改失败";
    }
}

dao层(不要忘记@Mapper注解)

package com.world.lzh.dao;

import com.world.lzh.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @Author lzh
 * @Date 2022/5/14 - 10:48
 * @Description
 * @Version 1.0.0
 **/
@Mapper
public interface UserDao {
    List<User> selectUser(User user);

    int updateUser(User user);

    int insertUser(User user);
}

xml层(写sql)

<?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.world.lzh.dao.UserDao">
    <insert id="insertUser">
        insert into test
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="userName != null and userName != ''">
                user_name,
            </if>
            <if test="userPassword != null and userPassword != ''">
                user_password,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id},
            </if>
            <if test="userName != null and userName != ''">
                #{userName},
            </if>
            <if test="userPassword != null and userPassword != ''">
                #{userPassword},
            </if>
        </trim>
    </insert>

    <update id="updateUser">
        UPDATE
            test
        <set>
            <if test="userName != null and userName != ''">
                user_name = #{userName},
            </if>
            <if test="userPassword != null and userPassword != ''">
                user_password = #{userPassword},
            </if>
        </set>
        WHERE
            id = #{id}
    </update>

    <select id="selectUser" resultType="com.world.lzh.entity.User">
        SELECT
            id,
            user_name userName,
            user_password userPassword
        FROM
            test
        where
            1 = 1
            <if test="id != null">
                and id = #{id}
            </if>
            <if test="userName != null and userName != ''">
                and user_name like concat('%',#{userName},'%')
            </if>
    </select>
</mapper>

接口测试

添加接口

image-20220514114855795

image-20220514114909757

修改

image-20220514115004388

image-20220514115018141

查询

image-20220514115522697

到此,集成mybatis就结束了,集成的过程还是挺简单的,使用起来也比较方便🤨

源码地址:点击访问欢迎评论star⭐

Last Updated: 2022/05/14 12:33:08
springboot使用swagger实现RestfulAPI springboot集成jpa