简介:
mybatis-plus是mybatis的升级版,在继承了原有的优秀功能上,在单表操作上提供了很多方便好用的api,只需要简单配置即可使用。
一,相关资源配置
导入相关依赖:
<?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>freerobin.mblog</groupId>
<artifactId>mblog</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.11</java.version>
<mysql.version>5.1.47</mysql.version>
<mybatis.version>2.1.1</mybatis.version>
<druid.version>1.2.5</druid.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
</project>
配置文件:application.peoperties
server.port=8010
spring.application.name=mblog
#连接池配置
#spring.datasource.url=jdbc:mysql://114.132.225.103:3306/mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mblog?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
二、简单demo
在启动类上加注解
@MapperScan(basePackages = "com.freerobin.mblog.mapper")
创建mapper
创建mapper并继承BaseMapper<xxxPOJO>,里面创建和数据库表对应的java bean
pojo实体类
package com.freerobin.mblog.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @Author Noah Zhang
* @Date Create by 2023/8/11
**/
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
@JsonProperty("id")
private Integer id;
@JsonProperty("username")
private String username;
@JsonProperty("password")
private String password;
@JsonProperty("nickname")
private String nickname;
@JsonProperty("phone")
private String phone;
}
@TableName("user")是映射数据库中的表名
@Override
public RestResponse selectOneByUserName(String username) {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("username", username);
User user = mapper.selectOne(wrapper);
return RestResponse.success(user);
}
调用创建的mapper,这里有常见的操作单表的方法
三、多表复杂查询
多表复杂查询,就需要用标准的xml配置的方式了
创建mapper.xml文件
在resource下创建mapper文件夹(mybatis默认会从这个文件夹去找.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.freerobin.mblog.mapper.PermissionMapper">
<!-- selectByName -->
<select id="selectPermissionList" resultType="java.lang.String">
SELECT DISTINCT
p.action
FROM
`user` u
LEFT JOIN user_role ur ON u.id = ur.user_id
LEFT JOIN role_permission rp ON ur.role_id = rp.role_id
LEFT JOIN permission p ON p.id = rp.permission_id
WHERE
u.id = #{userId}
</select>
</mapper>
这里的namespace对应的就是创建的mapper.interface ,id对应的是mapper里面的方法