小小白学习记录
来自尚硅谷的教育系统开发 学习笔记
课程一
首先建立数据库,添加相应一些数据
创建springboot工程
(1)引入相关依赖(springboot和mp)
- lombok依赖用来简化实体类,get方法不用再写(安装lombok插件)
(2)建立resources的application.properties配置文件
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=
//?serverTimezone=GMT%2B8后缀是因为spring boot2.1集成了8.0版本的jdbc驱动 配置数据库信息
(3)创建包entity实体
实体类user.java @Data插件,不需要写get方法
mapper的interface接口usermapper,继承basemapper
(4)在启动类上加上mapperscan,让其扫描到mapper接口
进行测试。(controller注入service,service注入mapper)
这里没有c s,所以注入mapper
@Autowired
private UserMapper userMapper;
mp实现查询
@Test
public void findAll() {
List<User> users = userMapper.selectList( null);// .var
System.out.println(users);
}
mp 实现添加操作
@Test
public void addUser(){
User user = new User();
user.setName("lucky");
user.setAge(22);
user.setEmail("323437332@qq.com");
int insert = userMapper.insert(user);
System.out.println("insert:"+insert); //id自动回填
}
主键生成策略:
自动增长 AUTO increment
UUID 每次生成随机唯一的值
redis生成ID
mp自带策略 snowflake算法
@TableId(type = IdType.ID_WORKER) //mp自带策略生成19位值,数字类型使用这种策略,比如long
@TableId(type = IdType.ID_WORKER_STR) //mp自带策略,生成19位值,字符串类型使用这种策略
mp实现修改操作
@Test
public void updateUser(){
User user = new User();
user.setId(2L);
user.setAge(30);
int row = userMapper.updateById(user);
System.out.println(row);
}
自动填充
表添加两个字段
create_time update_time
添加实体类属性
第一步 在实体类里面进行自动填充属性添加注解
第二步 创建类,实现接口metaobjectHandler 里面的方法
乐观锁
主要解决丢失更新问题(多个人同时修改同一条记录,最后提交的把之前的提交数据覆盖)
解决方案:
悲观锁:串行 只能一个人操作
乐观锁:version字段(比较当前数据版本和数据库版本是否一致,把版本号+1,不一致不能修改)
步骤一:表添加字段,以作为乐观锁版本号
步骤二:对应实体类添加版本号属性
步骤三:在实体类版本号属性添加注解
步骤四:配置插件
步骤五:进行测试,先查数据再修改,看版本号数是否加一
mp简单查询
根据id查询
User user = userMapper.selectById(1L)
批量查询
//多个id批量查询
@Test
public void testSelectDemol() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2));
System.out.println(users);
}
分页查询
第一步:设置分页插件
第二步:编写分页代码
删除
物理删除
@Test
public void testDeleteById(){
int result = userMapper.deleteById(1L);
System.out.println(result);
}
逻辑删除(通过标志位判断是否删除)
第一步:数据库表中添加逻辑删除标识,对应实体类中添加属性,属性添加注解
第二步:配置逻辑删除插件
第三步:执行删除代码
SQL性能分析插件
dev 开发环境
test 测试环境
prod 生产环境
复杂查询
ge 大于等于 gt 大于
le 小于等于 lt 小于
eq 等于
ne 不等于
like 模糊查询
orderByDesc 降序
last 之间拼接到sql语句的后面
select 指定列