上一篇:MyBatis 概述 · 下一篇:user 表 CRUD
本地新建 Maven 工程 mybatis-user-lab,复制下面文件。MySQL 库表请先执行 JDBC 环境与 user 表 中的 SQL。
1. pom.xml
<?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-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.version>3.5.16</mybatis.version> <mysql.version>8.3.0</mysql.version> </properties>
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>${mysql.version}</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>2. 目录结构
mybatis-user-lab/├── pom.xml└── src/main/ ├── java/demo/mybatis/ │ ├── User.java │ └── UserMapper.java └── resources/ ├── mybatis-config.xml └── mapper/UserMapper.xml3. mybatis-config.xml
路径:src/main/resources/mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
<environments default="dev"> <environment id="dev"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/jdbc_lab?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments>
<mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers></configuration>密码不是 root 时改 password 属性即可。
4. User.java
package demo.mybatis;
import java.time.LocalDateTime;
public class User { private Long id; private String userName; private String email; private int status; 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 int getStatus() { return status; } public void setStatus(int 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 + "}"; }}5. UserMapper.java
package demo.mybatis;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface UserMapper { int insert(User user); User selectById(@Param("id") long id); int updateEmail(@Param("id") long id, @Param("email") String email); int deleteById(@Param("id") long id); List<User> selectByStatus(@Param("status") int status);}6. UserMapper.xml
路径:src/main/resources/mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="demo.mybatis.UserMapper">
<resultMap id="UserMap" type="demo.mybatis.User"> <id property="id" column="id"/> <result property="userName" column="user_name"/> <result property="email" column="email"/> <result property="status" column="status"/> <result property="createdAt" column="created_at"/> </resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user (user_name, email, status) VALUES (#{userName}, #{email}, #{status}) </insert>
<select id="selectById" resultMap="UserMap"> SELECT id, user_name, email, status, created_at FROM user WHERE id = #{id} </select>
<update id="updateEmail"> UPDATE user SET email = #{email} WHERE id = #{id} </update>
<delete id="deleteById"> DELETE FROM user WHERE id = #{id} </delete>
<select id="selectByStatus" resultMap="UserMap"> SELECT id, user_name, email, status, created_at FROM user WHERE status = #{status} ORDER BY id </select></mapper>要点:
namespace= 接口全限定名#{}预编译占位,防注入resultMap解决user_name→userName映射useGeneratedKeys回填自增id
7. 编译
mvn -q compile下一篇加入 CrudDemo.java 运行完整流程。