一创建数据库(添加数据)
二 创建springboot工程
- 导入工程所需要的依赖(mybatis-plus,mysql-connector-java,lombok)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
- application.xml中设置数据库连接
- 创建entity文件夹创建实体类user
- 创建mapper层(创建mapper接口-----继承BaseMapper<> 添加spring容器中)
- basemapper接口中包含了基本的增删改查,分页功能
-
在主启动类中添加扫描mapper包否则会注入出现不成功
环境搭建完毕
三:测试
- 在测试类中创建usermapper属性实现自动注入
- 查询所有
//查询user表中的所有数据 @Test void findAll() { List<User> list = userMapper.selectList(null); System.out.println(list.toString()); }
-
添加一个用户(id设为自增)
id自增是在实体类的属性中设置@TableId(type=)@Test void add(){ User user = new User(); user.setName("海龙"); user.setAge(22); user.setEmail("海龙@qq123"); int insert = userMapper.insert(user); System.out.println(insert); }
- 主键自动增长的策略
- 修改操作
- 自动填充
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
this.setFieldValByName("version",1,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
- 逻辑删除(使用springboor低于2.2增加一个配置类的插件)
1数据库添加对应字段(设置初始值)
2实体类添加属性(设置TableLogic注解)
3applicaton.yml设置对应标识字符mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-not-delete-value: 0 logic-delete-value: 1
- 乐观锁
定义:乐观锁就是 version字段(比较跟上一次的版本号,如果一样则更新,如果失败则要 重复读-比较-写的操作。)
1数据库添加version字段(设置初始值----自动填充或数据库默认)
2实体类添加对应属性(@Version)
3配置乐观锁插件@Bean public MybatisPlusInterceptor optimisticLockerInnerInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; }
- 实现复杂查询
QueryWrapper<User> wrapper = new QueryWrapper<>()
- 分页查询
1在配置类中增加分页插件/*** * 分页插件 * @return */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2)); return interceptor; }
2编写分页代码void page(){ Page<User> page = new Page<>(2,3);//当前页,页面大小 Page<User> page1 = userMapper.selectPage(page, null); System.out.println("获取页面内全部数据 getRecords"+page1.getRecords());//获取页面内全部数据 System.out.println("获取总记录数 getTotal"+page1.getTotal());//获取总记录数 System.out.println("获取每页显示的记录数 getSize"+page1.getSize());//获取每页显示的记录数 System.out.println("获取当前页 getCurrent"+page1.getCurrent());//获取当前页 System.out.println("获取总页数 getPages"+page1.getPages());//获取总页数 System.out.println("是否有下一页 hasNext"+page1.hasNext());//是否有下一页 System.out.println("是否有上一页 hasPrevious"+page1.hasPrevious());//是否有上一页 }