上一篇: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.java3. 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> 已内置 insert、deleteById、updateById、selectById、selectList 等,无需 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. 编译
mvn -q compile下一篇用 SqlSession 调用 BaseMapper 完成 CRUD。