1.自动生成创建修改时间
package com.softeem.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
// AUTO(0),数据库id自增
// NONE(1),未设置主键
// INPUT(2),手动输入
// ID_WORKER(3),默认全局唯一id
// UUID(4),全局唯一id uuid
// ID_WORKER_STR(5);字符串表示法
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic//逻辑删除
private Integer deleted;
@Version//乐观锁注解
private Integer version;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
package com.softeem.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
package com.softeem.MpConfig;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@MapperScan("com.softeem.mapper")//扫描mapper文件夹
@EnableTransactionManagement//事务管理
@Configuration//配置类
public class MybatisPlusConfig {
@Bean//注册乐观锁插件
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
@Bean//分页插件
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
@Bean//逻辑删除组件
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
@Bean//SQL执行效率插件
@Profile({"dev","test"})//设置dev test 环境开启 保证我们的效率
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setMaxTime(100);//设置SQL执行最大时间,超过则不执行
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
}
#设置开发环境
spring.profiles.active=dev
#服务端口
server.port=80
#禁用缓存模板
spring.thymeleaf.cache=false
#数据库相关配置
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplus?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
package com.softeem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.softeem.mapper.UserMapper;
import com.softeem.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@SpringBootTest
class DemoApplicationTests {
@Resource
private UserMapper userMapper;
@Test
void contextLoads() {
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
@Test//插入
public void text1() {
User user = new User();
user.setName("张子健");
user.setAge(18);
user.setEmail("3211494238@qq.com");
userMapper.insert(user);
System.out.println(user);
}
@Test//修改
public void text2() {
User user = new User();
user.setId(1454726560930181121L);
user.setName("张");
userMapper.updateById(user);
}
@Test//批量查询
public void text3() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(1454726560930181121L));
users.forEach(l-> System.out.println(l));
}
@Test//按条件查询
public void text4() {
HashMap<String, Object> map = new HashMap<>();
map.put("age",18);
map.put("name","张子健");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
@Test//分页查询
public void text5(){
//current:当前页 size:页面大小
Page<User> page=new Page<>(1,5);
userMapper.selectPage(page,null);
page.getRecords().forEach(p-> System.out.println(p));
}
@Test//删除
public void text6(){
userMapper.deleteById(1454726560930181122L);
}
@Test//批量删除
public void text7(){
userMapper.deleteBatchIds(Arrays.asList(5L,6L));
}
@Test//按条件删除
public void text8(){
HashMap<String, Object> map = new HashMap<>();
map.put("name","Sandy");
map.put("age",21);
userMapper.deleteByMap(map);
}
@Test//测试乐观锁
public void textOptimisticLocker(){
//1.查询用户信息
User user = userMapper.selectById(1L);
//2.修改用户信息
user.setName("王峰");
user.setEmail("111.qq.com");
//3.执行更新操作
userMapper.updateById(user);
}
}
package com.softeem;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.softeem.mapper.UserMapper;
import com.softeem.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@SpringBootTest
public class WrapperTest {
@Resource
private UserMapper userMapper;
@Test
void text1() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.isNotNull("name")//不为空
.eq("name", "张子健")//等于
.ne("email", "3")//不等于
.lt("age", 80)//小于
.between("age",18,40)//区间
.like("name", "子健");//模糊查询
//查询一个selectOne
//查询多个用selectList selectMap
//查询结果数selectCount
userMapper.selectList(wrapper).forEach(w -> System.out.println(w));
}
}
#设置开发环境
spring.profiles.active=dev
#服务端口
server.port=80
#禁用缓存模板
spring.thymeleaf.cache=false
#实体类属性名和数据库表字段名开启驼峰命名
mybatis-plus.global-config.db-config.table-underline=true
#添加全局配置设置表名前缀:
mybatis-plus.global-config.db-config.table-prefix=t_
#数据库相关配置
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/store?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0