教育在线系统开发学习(一)

小小白学习记录
来自尚硅谷的教育系统开发 学习笔记

课程一

首先建立数据库,添加相应一些数据

创建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 指定列

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值