// An highlighted block
1.引入依赖
<!--mybatis-plus 额外需要导入的依赖: baomidou-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
2.数据表绑定类
@TableName(value = "user") --对应的表名
public class AccDto{
}
3. 主键id
@TableId(type = IdType.ASSIGN_ID) --主键id,默认雪花算法
AUTO(0), --自增
NONE(1), --无
INPUT(2), --手动输入
ASSIGN_ID(3), -- 随机id = 雪花
ASSIGN_UUID(4), --随机 String类型 uuid
4.字段处理
@TableField(value = "name") --对应数据库的字段名
@TableField(select = false) -- 不查这个字段
@TableField(exist = false) -- 数据库中没有这个字段
5. 默认赋值
@TableField(fill = FieldFill.INSERT) --插入时赋值时间 默认时间格式
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) --插入时或修改时赋值时间 默认时间格式
private Date updateTime;
需要制定赋值的时间格式,创建一个handler
@Component
public class MyMetaObjectHandler 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);
}
}
6.数据库数据修改版本号,解决了高并发数据篡改问题,cas乐观锁
6.1 数据库添加version字段 int 1 默认值1
6.2 实体类
@Version
private Integer version;
6.3 先查再改
AccDto sele = userMapper.selectById(1396031607151337474L);
sele.setSex("女");
userMapper.updateById(sele);
7. 删除状态,实体类加 @TableLogic ,数据库加字段 deleted
@TableLogic
private Integer deleted;
//删除状态,
mybatis-plus:
global-config:
db-config:
logic-not-delete-value: 0 -- 未删除 0
logic-delete-value: 1 --已删除 1
根据id删除就是将deleted字段改为1: userMapper.deleteById(1);
默认查询 deleted 为 0 的: userMapper.selectList(null).forEach(System.out::println);
8.
多条件查询
lt:less than 小于
le:less than or equal to 小于等于
eq:equal to 等于
ne:not equal to 不等于
ge:greater than or equal to 大于等于
gt:greater than 大于
like: %小%
likeLeft: %小
likeRight: 小%
orderByAsc: 升序
in 条件: inSql
QueryWrapper wrapper1 = new QueryWrapper();
wrapper1.inSql("id","select id from user where id < 5");
等价于 SELECT id,create_time,update_time,status,deleted,name AS pro_name,age,version FROM user WHERE deleted=0 AND (id IN (select id from user where id < 5))
9.分页
id 小于13960303086451630091 的数据进行分页,第1页,每页数量10条
QueryWrapper<AccDto> wrapper = new QueryWrapper<>();
wrapper.le("id","13960303086451630091");
Page<AccDto> page = new Page<>(1, 10);//当前页,每页10条
Page<AccDto> userIPage = userMapper.selectPage(page, wrapper);
List<AccDto> list = userIPage.getRecords();
list.forEach(System.out::println); //取出来的数据
System.out.println("总条数"+userIPage.getTotal());
System.out.println("总页数"+userIPage.getPages());
10.多表关联查询带分页
void product(int page,int limit){
int pageStart = (page-1) * limit;
List<ProductVo> list =userMapper.productList(1,pageStart,limit);
list.forEach(System.out::println);
}
//Mapper
public interface UserMapper extends BaseMapper<AccDto> {
@Select("select u.id,u.name,u.age , u.sex, p.name as proname ,p.price from user u,product p where u.id = p.id and u.id = #{id} limit ${page},${limit}")
List<ProductVo> productList(Integer id,Integer page,Integer limit);
}
自动生成 包,entity,controller,service,serviceImpl,mapper
public static void main(String[] args) {
//创建generator 对象
AutoGenerator autoGenerator = new AutoGenerator();
//数据源
DataSourceConfig datasourceConfig = new DataSourceConfig();
datasourceConfig.setDbType(DbType.MYSQL);
datasourceConfig.setUrl("jdbc:mysql://localhost:3306/库名?useUnicode=true&characterEncoding=UTF-8");
datasourceConfig.setUsername("账号");
datasourceConfig.setPassword("密码");
datasourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
autoGenerator.setDataSource(datasourceConfig);
//全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
globalConfig.setOpen(false);//不需要打开文件夹
globalConfig.setAuthor("jianglei");
autoGenerator.setGlobalConfig(globalConfig);
//包信息
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.jianglei.mybtaisplus");//父包
packageConfig.setModuleName("generator");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setMapper("mapper");
packageConfig.setEntity("entity");
autoGenerator.setPackageInfo(packageConfig);
//配置策略
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setInclude(new String[]{"address"});//设置需要生成的表 //设置要映射的表(可包含多个)
strategyConfig.setEntityLombokModel(true); //自动添加lombook
strategyConfig.setNaming(NamingStrategy.underline_to_camel);//根据下划线驼峰命名
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//根据下划线自动转换
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}
mybatisplus
最新推荐文章于 2023-07-15 11:34:07 发布