如何自己搭建一个网站,网站建设网站制作公司哪家好,景德镇网站网站建设,discover wordpress一、MyBatis-Plus核心特性
无侵入性 在MyBatis基础上增强#xff0c;无需修改原有代码即可使用。自动化CRUD 内置通用Mapper和Service#xff0c;减少80%单表操作代码。Lambda表达式 支持Lambda形式的条件构造#xff0c;避免字段名硬编码错误。主键策略 支持雪花算法…一、MyBatis-Plus核心特性
无侵入性 在MyBatis基础上增强无需修改原有代码即可使用。自动化CRUD 内置通用Mapper和Service减少80%单表操作代码。Lambda表达式 支持Lambda形式的条件构造避免字段名硬编码错误。主键策略 支持雪花算法ASSIGN_ID、UUIDASSIGN_UUID、自增AUTO等主键生成方式。
二、快速入门案例
1. 数据库准备
DROP TABLE IF EXISTS sys_user;CREATE TABLE sys_user
(id BIGINT NOT NULL COMMENT 主键ID,name VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id)
);
DELETE FROM sys_user;INSERT INTO sys_user (id, name, age, email) VALUES
(1, Jone, 18, test1baomidou.com),
(2, Jack, 20, test2baomidou.com),
(3, Tom, 28, test3baomidou.com),
(4, Sandy, 21, test4baomidou.com),
(5, Billie, 24, test5baomidou.com);2. Spring Boot配置
pom.xml依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-annotation/artifactIdversion3.5.3.1/version/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-core/artifactIdversion3.5.3.1/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion3.0.3/version/dependencyapplication.yml
spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezoneGMT%2B8username: rootpassword: root3. 实体类与Mapper
package com.awei.mybatismodel.entity;import lombok.Data;Data
public class SysUser {private Long id;private String name;private Integer age;private String email;
}
package com.awei.mybatismodel.mapper;import com.awei.mybatismodel.entity.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface SysUserMapper extends BaseMapperSysUser {}
4.启动类
package com.awei.mybatismodel;import org.springframework.boot.SpringApplication;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
MapperScan(com.awei.mybatismodel.mapper)
public class MybatisModelApplication {public static void main(String[] args) {SpringApplication.run(MybatisModelApplication.class, args);}}
5.测试
package com.awei.mybatismodel;import com.awei.mybatismodel.entity.SysUser;
import com.awei.mybatismodel.mapper.SysUserMapper;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;SpringBootTest
public class QuickStartTest {Autowiredprivate SysUserMapper userMapper;Testpublic void testSelect() {System.out.println((----- selectAll method test ------));ListSysUser userList userMapper.selectList(null);Assertions.assertEquals(5, userList.size());userList.forEach(System.out::println);}
} 三、核心注解详解
注解作用示例TableName指定实体类对应的表名TableName(sys_user)TableId标识主键字段TableId(type IdType.AUTO)TableField字段与列映射/自动填充策略TableField(value email, fill FieldFill.INSERT_UPDATE)
主键策略示例
public enum IdType {AUTO, // 数据库自增ASSIGN_ID, // 雪花算法默认ASSIGN_UUID // UUID生成
}四、CRUD操作
1. 基础操作
// 插入
User user new User();
user.setName(Tom);
userMapper.insert(user);// 查询
User user userMapper.selectById(1L);// 更新
user.setAge(30);
userMapper.updateById(user);// 删除
userMapper.deleteById(2L);2. 条件构造器Wrapper
LambdaQueryWrapperUser wrapper new LambdaQueryWrapper();
wrapper.like(User::getName, J) // 模糊查询.ge(User::getAge, 18) // 年龄18.orderByDesc(User::getCreateTime);ListUser users userMapper.selectList(wrapper);生成SQL
SELECT * FROM user WHERE name LIKE %J% AND age 18 ORDER BY create_time DESC五、分页查询
1. 配置分页插件
Configuration
public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}2. 分页查询代码
PageUser page new Page(1, 10); // 第1页每页10条
LambdaQueryWrapperUser wrapper new LambdaQueryWrapper();
wrapper.eq(User::getAge, 20);IPageUser userPage userMapper.selectPage(page, wrapper);
System.out.println(总记录数 userPage.getTotal());六、高级功能
1. 逻辑删除
表字段
ALTER TABLE user ADD is_deleted TINYINT(1) DEFAULT 0 COMMENT 逻辑删除标记;配置
mybatis-plus:global-config:db-config:logic-delete-field: isDeleted # 逻辑删除字段名logic-delete-value: 1 # 删除标记值logic-not-delete-value: 0 # 未删除标记值2. 自动填充
public class MetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, createTime, LocalDateTime.class, LocalDateTime.now());}
}更新中----