02(02国家队)

  本篇文章为你整理了02(02国家队)的详细内容,包含有02年多大年龄了 02国家队 02年属马的2023年多大 02是哪个动漫里的人物 02,希望能帮助你了解 02。

   password: 123456

   url: "jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC useUnicode=true characterEncoding=utf-8"

   driver-class-name: com.mysql.cj.jdbc.Driver

  

 

 

  
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

  import com.mj.demomptest.entity.User;

  public interface UserMapper extends BaseMapper User {

  

 

 

  
import org.mybatis.spring.annotation.MapperScan;

  import org.springframework.boot.SpringApplication;

  import org.springframework.boot.autoconfigure.SpringBootApplication;

  @SpringBootApplication

  @MapperScan("com.mj.demomptest.mapper")

   mapper 是一个interface接口动态生成实现类对象

   动态生成对象默认找不到

   @MapperScan 才能找到动态生成的对象

  public class DemomptestApplication {

   public static void main(String[] args) {

   SpringApplication.run(DemomptestApplication.class, args);

  

 

 

  
import org.junit.jupiter.api.Test;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.boot.test.context.SpringBootTest;

  import java.util.List;

  @SpringBootTest

  class DemomptestApplicationTests {

   @Autowired

   private UserMapper userMapper;

  


 

 

  

 //修改

 

   @Test

   public void testUpdate(){

   User user = new User();

   user.setId(1585808430935887874L);

   user.setName("Mary");

   int count = userMapper.updateById(user);

   System.out.println(count);

  

 

  4.组件策略

  1、插入操作

  

//添加

 

  @Test

  public void testAdd() {

   User user = new User();

   user.setName("lucy");

   user.setAge(20);

   user.setEmail("1243@qq.com");

   int insert = userMapper.insert(user);

   System.out.println(insert);

  

 

  注意:数据库插入id值默认为:全局唯一id

  

1585808430935887874

 

  

 

  2、MP的主键策略

  2.1 ASSIGN_ID

  MyBatis-Plus默认的主键策略是:ASSIGN_ID (使用了雪花算法)

  

@TableId(type = IdType.ASSIGN_ID)``private String id;

 

  

 

  雪花算法:分布式ID生成器

  雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

  核心思想:

  长度共64bit(一个long型)。

  首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。

  41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。

  10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。

  12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。

  优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。

  2.2 AUTO 自增策略

  需要在创建数据表的时候设置主键自增

  实体字段中配置 @TableId(type = IdType.AUTO)

  

@TableId(type = IdType.AUTO)

 

  private Long id;

  

 

  要想影响所有实体的配置,可以设置全局主键配置

  

#全局设置主键生成策略

 

  mybatis-plus.global-config.db-config.id-type=auto

  

 

  5.mp自动填充 乐观锁

  使用相同的方式填充

  
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 MyMetaObjectHandler implements MetaObjectHandler {

   //mp执行添加操作时

   @Override

   public void insertFill(MetaObject metaObject) {

   //属性名称,设置的值(当前时间),metaObject对象 ;当前时间 set createTime中去

   this.setFieldValByName("createTime",new Date(),metaObject);

   this.setFieldValByName("updateTime",new Date(),metaObject);

   //mp执行修改时

   @Override

   public void updateFill(MetaObject metaObject) {

   this.setFieldValByName("updateTime",new Date(),metaObject);

  

 

 

  
多线程操作中或并发操作中,多人更改同一条数据,最后提交的事务,把之前的事务覆盖,丢失更新问题

  取出记录时,获取当前的版本号 version

  更新时,带上当前version

  执行更新时, set version = newVersion where version = oldVersion 比较当前修改数据版本和数据库版本是否一样

  如果 version 不对 ,就更新失败

  
创建包config,创建文件MybatisPlusConfig.java

  此时可以删除主类中的 @MapperScan 扫描注解

  

package com.mj.demomptest.config;

 

  import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;

  import org.mybatis.spring.annotation.MapperScan;

  import org.springframework.context.annotation.Bean;

  import org.springframework.context.annotation.Configuration;

  @Configuration

  @MapperScan("com.mj.demomptest.mapper")

  public class MpConfig {

   //乐观锁插件

   @Bean

   public OptimisticLockerInterceptor optimisticLockerInterceptor() {

   return new OptimisticLockerInterceptor();

  
List User users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));

   System.out.println(users);

  

 

  
public PaginationInterceptor paginationInterceptor() {

   return new PaginationInterceptor();

  

 

 

  
long pages = userPage.getPages();//总页数

   long current = userPage.getCurrent();//当前页

   List User records = userPage.getRecords();//查询数据集合

   long total = userPage.getTotal();//总记录数

   boolean hasNext = userPage.hasNext();//现在当前页是否有下一页

   boolean hasPrevious = userPage.hasPrevious();//现在当前页是否有上一页

  

 

 

  
public void testDeleteBatchIds() {

   int result = userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));

   system.out.println(result);

  

 

 

  
逻辑删除:表中数据还存在,但在查询时,查不出来

  ​ 在表添加字段,作为逻辑删除标志,每次删除时,修改标志位

  
测试

  注意:被删除前,数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作

  

 @Test

 

   public void testLogicDelete() {

   int result = userMapper.deleteById(1585882038232223746L);

   System.out.println(result);

  

 

  数据库中的数据并没有被删除,只是修改了 deleted的值 为1

  
1,wapper介绍

  Wrapper : 条件构造抽象类,最顶端父类

  AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件

  QueryWrapper : 查询条件封装

  UpdateWrapper : Update 条件封装

  AbstractLambdaWrapper : 使用Lambda 语法

  LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper

  LambdaUpdateWrapper : Lambda 更新封装Wrapper

  2,测试用例

  
QueryWrapper User queryWrapper = new QueryWrapper ();

   //表中的字段名字,值 age 大于等于21的

   queryWrapper.ge("age",21);//大于等于

   List User users = userMapper.selectList(queryWrapper);

   System.out.println(users);

  

 

 

  
eq(等于)、ne(不等于)

  注意:seletOne()返回的是一条实体记录,当出现多条时会报错

  

 //eq ne

 

   @Test

   public void testSelectOne(){

   QueryWrapper User queryWrapper = new QueryWrapper ();

   queryWrapper.eq("name","Tom");

   List User users = userMapper.selectList(queryWrapper);

   System.out.println(users);

  

 

  
QueryWrapper User queryWrapper = new QueryWrapper ();

   //字段,开始值,结束值 age [22,28]

   queryWrapper.between("age",22,28);

   List User users = userMapper.selectList(queryWrapper);

   System.out.println(users);

  

 

 

  
like、notlike、likeLeft、likeRight(%的右边)

  

update user set name like %张

 

  

 

  selectMap()返回Map集合列表,通常配合select()使用

  

 @Test

 

   public void testSelectB(){

   QueryWrapper User queryWrapper = new QueryWrapper ();

   queryWrapper.like("name","J");

   List User users = userMapper.selectList(queryWrapper);

   System.out.println(users);

  

 

  
queryWrapper.orderByDesc("id");

   List User users = userMapper.selectList(queryWrapper);

   System.out.println(users);

  

 

 

  以上就是02(02国家队)的详细内容,想要了解更多 02的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: