环境与 BaseMapper

笔记/Java/Java 持久层/MyBatis-Plus/环境与 BaseMapper

上一篇:MyBatis-Plus 概述 · 下一篇:user 表 CRUD

本地新建 Maven 工程 mybatis-plus-user-lab。MySQL 请先执行 JDBC 环境与 user 表 中的 SQL。

1. pom.xml#

MP 3.5.9 起分页插件依赖 mybatis-plus-jsqlparser,需单独引入:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blog.demo</groupId>
<artifactId>mybatis-plus-user-lab</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis-plus.version>3.5.9</mybatis-plus.version>
<mysql.version>8.3.0</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.0</version>
</plugin>
</plugins>
</build>
</project>

JDK 8 项目改用 mybatis-plus-jsqlparser-4.9 同版本号。

2. 目录结构#

mybatis-plus-user-lab/
├── pom.xml
└── src/main/java/demo/mp/
├── User.java
├── UserMapper.java
└── Mp.java

3. User.java#

package demo.mp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("user_name")
private String userName;
private String email;
private Integer status;
@TableField("created_at")
private LocalDateTime createdAt;
public User() {}
public User(String userName, String email, int status) {
this.userName = userName;
this.email = email;
this.status = status;
}
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public Integer getStatus() { return status; }
public void setStatus(Integer status) { this.status = status; }
public LocalDateTime getCreatedAt() { return createdAt; }
public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
@Override
public String toString() {
return "User{id=" + id + ", userName='" + userName + "', email='" + email
+ "', status=" + status + ", createdAt=" + createdAt + "}";
}
}

4. UserMapper.java#

package demo.mp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}

BaseMapper<User> 已内置 insertdeleteByIdupdateByIdselectByIdselectList 等,无需 XML

5. Mp.java — 程序化启动(无 Spring)#

package demo.mp;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import javax.sql.DataSource;
public final class Mp {
private Mp() {}
public static SqlSessionFactory factory() {
HikariConfig cfg = new HikariConfig();
cfg.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/jdbc_lab?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai");
cfg.setUsername("root");
cfg.setPassword("root");
cfg.setMaximumPoolSize(5);
DataSource ds = new HikariDataSource(cfg);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setMapUnderscoreToCamelCase(true);
GlobalConfigUtils.setGlobalConfig(configuration, new GlobalConfig());
configuration.addMapper(UserMapper.class);
configuration.setEnvironment(new Environment("dev", new JdbcTransactionFactory(), ds));
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
configuration.addInterceptor(interceptor);
return new MybatisSqlSessionFactoryBuilder().build(configuration);
}
}

要点:

  • 必须用 MybatisSqlSessionFactoryBuilder,不能用原生 SqlSessionFactoryBuilder
  • @TableField("user_name") 映射列名;也可只靠 mapUnderscoreToCamelCase
  • 分页插件在 3.5.9+ 依赖 mybatis-plus-jsqlparser

6. 编译#

Terminal window
mvn -q compile

下一篇用 SqlSession 调用 BaseMapper 完成 CRUD。

文章目录

文章目录