mybatis-plus 笔记
依赖
查看代码
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
配置
src/main/java/com/example/mybatisplus/config/MybatisPlusConfig.java
查看代码
package com.example.mybatisplus.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//字段默认赋值
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//分页
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
src/main/resources/application.yml
查看代码
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
logic-delete-field: deleted
mapper-locations: classpath:/mappers/*Mapper.xml
type-aliases-package: com.example.mybatisplus.pojo
更新和删除填充值
src/main/java/com/example/mybatisplus/handler/MyMetaObjectHandler.java
查看代码
package com.example.mybatisplus.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.sql.Timestamp;
import java.util.Date;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// log.info("insert fill");
this.setFieldValByName("gmt_create", new Timestamp(new Date().getTime()), metaObject);
// this.setFieldValByName("create_time", new Timestamp(new Date().getTime()), metaObject);
this.setFieldValByName("gmt_modified", new Timestamp(new Date().getTime()), metaObject);
// System.out.println(metaObject.getOriginalObject());
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("update fill");
this.setFieldValByName("gmt_modified", new Timestamp(new Date().getTime()), metaObject);
}
}
Mapper
src/main/java/com/example/mybatisplus/mapper/IUserMapper.java
查看代码
package com.example.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.mybatisplus.pojo.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IUserMapper extends BaseMapper<User> {
User selectOnly(int age);
}
src/main/resources/mappers/UserMapper.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.example.mybatisplus.mapper.IUserMapper">
<select id="selectOnly" resultType="User">
select id,name,age,email
from user
where deleted = 0 and age > #{age} limit 1
</select>
</mapper>
Pojo
src/main/java/com/example/mybatisplus/pojo/User.java
查看代码
package com.example.mybatisplus.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.sql.Timestamp;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class User {
@TableId(type= IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
// @TableField(fill = FieldFill.INSERT)
private Timestamp gmt_create;
// @TableField(fill = FieldFill.INSERT_UPDATE)
private Timestamp gmt_modified;
@Version
private int version;
private int deleted;
}
本文来自博客园,作者:Bin_x,转载请注明原文链接:https://www.cnblogs.com/Bin-x/p/15734549.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)