SpringBoot интегрирует Mybatis-Plus

задняя часть база данных MyBatis SQL

В этой статье представлена ​​интеграция Mybatis-Plus с SpringBoot и представлена ​​небольшая демонстрация для ознакомления.

Давненько я не писала статьи, недавно как раз закончила заниматься кое-какими делами дома, и воспользовалась случаем немного отдохнуть. Я только что вернулся в компанию, взглянул на Code Cloud и обнаружил, что лицом, прикрывающим этот выпуск Code Cloud, является человек, отвечающий за команду Mybatis-Plus Бао Мидоу, как показано ниже.

Я вдруг подумал, что давно никто не рассказывал мне, как интегрировать Mybatis-Plus со SpringBoot, я только что вспомнил, что в этот раз я сделаю интегрированную демку.

Ближе к дому создайте новый проект. Добавьте зависимости Mybatis в файл pom.Полный pom выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.dalaoyang</groupId>
	<artifactId>springboot_mybatisplus</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot_mybatisplus</name>
	<description>springboot_mybatisplus</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatisplus-spring-boot-starter</artifactId>
			<version>1.0.5</version>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus</artifactId>
			<version>2.3</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

Конфигурация базы данных конфигурации файла конфигурации и соответствующая информация о сущности Mybatis-Plus настраиваются следующим образом:

##端口号
server.port=8888

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


##日志级别
logging.level.com.dalaoyang.dao.UserMapper=debug
##mybatis-plus mapper xml 文件地址
mybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xml
##mybatis-plus type-aliases 文件地址
mybatis-plus.type-aliases-package=com.dalaoyang.entity

Код пользователя класса сущности выглядит следующим образом:

package com.dalaoyang.entity;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.entity
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
public class User {
    private int id;
    private String user_name;
    private String user_password;

    public User() {
    }

    public User(String user_name, String user_password) {
        this.user_name = user_name;
        this.user_password = user_password;
    }

    public User(int id, String user_name, String user_password) {
        this.id = id;
        this.user_name = user_name;
        this.user_password = user_password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_password() {
        return user_password;
    }

    public void setUser_password(String user_password) {
        this.user_password = user_password;
    }
}

Ниже приведены моменты, на которые необходимо обратить внимание.Добавлен новый класс конфигурации MybatisPlus, который не сделал слишком много настроек, а просто задал диалект.Код выглядит следующим образом:

package com.dalaoyang.config;

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.config
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        PaginationInterceptor page = new PaginationInterceptor();
        //设置方言类型
        page.setDialectType("mysql");
        return page;
    }
}

UserMapper наследует BaseMapper от MybatisPlus, в котором перечислены общие методы запроса getUserList, Полный код выглядит следующим образом:

package com.dalaoyang.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.dalaoyang.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.dao
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {
    List<User> getUserList();

}

Создайте новый UserMapper.xml и пропишите в нем getUserList, соответствующий 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.dalaoyang.dao.UserMapper">
    <resultMap id="user" type="com.dalaoyang.entity.User"/>
    <parameterMap id="user" type="com.dalaoyang.entity.User"/>

    <select id="getUserList" resultMap="user">
        SELECT  * FROM USER
    </select>
</mapper>

Наконец, как обычно, создайте новый контроллер для тестирования.Полный код выглядит следующим образом:

package com.dalaoyang.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.dalaoyang.dao.UserMapper;
import com.dalaoyang.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author dalaoyang
 * @Description
 * @project springboot_learn
 * @package com.dalaoyang.controller
 * @email yangyang@dalaoyang.cn
 * @date 2018/7/20
 */
@RestController
public class UserController {

    @Autowired
    private UserMapper userDao;

    //http://localhost:8888/getUserList
    @GetMapping("getUserList")
    public List<User> getUserList(){
        return userDao.getUserList();
    }

    //http://localhost:8888/getUserListByName?userName=xiaoli
    //条件查询
    @GetMapping("getUserListByName")
    public List<User> getUserListByName(String userName)
    {
        Map map = new HashMap();
        map.put("user_name", userName);
        return userDao.selectByMap(map);
    }

    //http://localhost:8888/saveUser?userName=xiaoli&userPassword=111
    //保存用户
    @GetMapping("saveUser")
    public String saveUser(String userName,String userPassword)
    {
        User user = new User(userName,userPassword);
        Integer index = userDao.insert(user);
        if(index>0){
            return "新增用户成功。";
        }else{
            return "新增用户失败。";
        }
    }

    //http://localhost:8888/updateUser?id=5&userName=xiaoli&userPassword=111
    //修改用户
    @GetMapping("updateUser")
    public String updateUser(Integer id,String userName,String userPassword)
    {
        User user = new User(id,userName,userPassword);
        Integer index = userDao.updateById(user);
        if(index>0){
            return "修改用户成功,影响行数"+index+"行。";
        }else{
            return "修改用户失败,影响行数"+index+"行。";
        }
    }


    //http://localhost:8888/getUserById?userId=1
    //根据Id查询User
    @GetMapping("getUserById")
    public User getUserById(Integer userId)
    {
        return userDao.selectById(userId);
    }

    //http://localhost:8888/getUserListByPage?pageNumber=1&pageSize=2
    //条件分页查询
    @GetMapping("getUserListByPage")
    public List<User> getUserListByPage(Integer pageNumber,Integer pageSize)
    {
        Page<User> page =new Page<>(pageNumber,pageSize);
        EntityWrapper<User> entityWrapper = new EntityWrapper<>();
        entityWrapper.eq("user_name", "xiaoli");
        return userDao.selectPage(page,entityWrapper);
    }

}

Вот небольшое объяснение приведенного выше кода, который включает в себя следующие методы:
1. getUserList : это распространенный метод запросов Mybatis, Mybatis-Plus не используется, и я не буду здесь подробно объяснять.
2. getUserListByName: условный запрос, запрос списка пользователей по имени, здесь используется метод selectByMap, и параметр должен передавать карту, которая соответствует имени запрашиваемого поля и соответствующему значению запроса.
3.saveUser: сохранить пользователя, здесь используется метод вставки, необходимо передать объект сущности, а значение Integer возвращается как количество затронутых строк.
4.updateUser: для изменения пользователя здесь используется метод updateByIdt, необходимо передать объект сущности, а значение Integer возвращается как количество затронутых строк. 5. getUserById : для запроса объектов сущностей в соответствии с идентификатором вам необходимо передать идентификатор пользователя.
6.getUserListByPage: условный запрос на подкачку, используя метод selectPage, для этого метода требуется объект подкачки Page и условный объект EntityWrapper. Страница помещает номер страницы и номер каждой страницы, а EntityWrapper использует метод eq, чтобы поместить соответствующее имя поля и соответствующее значение запроса.

Вот лишь несколько примеров методов.Существует гораздо больше методов.Чтобы узнать больше об использовании Mybatis-Plus, пожалуйста, ознакомьтесь с официальной документацией:Конфиденциальность all.OSCHINA.IO/ не ставил акцию-побег…

Загрузка исходного кода:Большой Лао Ян Маюн

Персональный сайт:www.dalaoyang.cn

Подпишитесь на официальный аккаунт автора

dalaoyang_gongzhonghao.jpg