当前位置: 首页 > wzjs >正文

学设计的视频网站网络推广运营公司

学设计的视频网站,网络推广运营公司,广州建设交易中心网站,wordpress怎么修改网站标题注解 tablename注解 - 描述:表名注解,标识实体类对应的表 - 使用位置:实体类 代码举例: TableName//可以不加,使用实体类的名字作为表名!忽略大小写 //BaseMapper->User实体类-》实体类名-》表名数据…

注解

@tablename注解

- 描述:表名注解,标识实体类对应的表

- 使用位置:实体类

代码举例:

@TableName//可以不加,使用实体类的名字作为表名!忽略大小写

//BaseMapper->User实体类-》实体类名-》表名数据库操作

//当数据库的表名和实体类命名不同(忽略大小写),使用@TableName注解指定表名

public class User {

    private Long id;

    private String name;

    private Integer age;

    private String email;

}

@TableId注解

应用场景:①当主键的列名与属性名不一致时,②主键生成策略不是默认策略

- 描述:主键注解

- 使用位置:实体类主键字段

例如

@TableName("sys_user")

/**

*默认使用雪花算法:

*①数据库的主键是bigint/varchar64)类型

*②对应实体类的属性是Long类型

*③随机生成一个数字,给与主键值(不重复)

*Auto

mysql数据库创建表的主键列的时候,类型为数字,还要加上auto_increment

②插入数据自动增长。

*/

public class User {

    @TableId(value="主键列名",type=主键策略)

    private Long id;

    private String name;

    private Integer age;

    private String email;

}

|属性|

类型

|必须指定

|默认值|

描述|

|value|

String|

|""|

主键字段名|

|type

Enum

|否

dType.NONE|

指定主键类型

IdType属性可选值:

|值

|描述|

|AUTO

|数据库 ID 自增 (mysql配置主键自增长)|

|ASSIGN_ID(默认)

|分配 ID(主键类型为 Number(Long )或 String)(since 3.3.0),使用接口`IdentifierGenerator`的方法`nextId`(默认实现类为`DefaultIdentifierGenerator`雪花算法)|

雪花算法:随机生成一个long类型不重复的数字

全局配置修改主键策略:

mybatis-plus:

  configuration:

    # 配置MyBatis日志

    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  global-config:

    db-config:

      # 配置MyBatis-Plus操作表的默认前缀

      table-prefix: t_

      # 配置MyBatis-Plus的主键策略,全局件主键设置为自增长策略

      id-type: auto

@TableFiled使用

描述:字段注解(非主键)

举例:

@TableName("sys_user")

public class User {

    @TableId

    private Long id;

    private String name;

    private Integer age;

    private String email;

   @TableField(value="password",exist="false")

    private int password;//在数据库中没有对应的列

}

TableField中的属性

类型

必须指定

默认值

描述

Value

String

""

数据库字段名

Exist

 boolean

 

 true

 是否为数据库表字段

**MyBatis-Plus会自动开启驼峰命名风格映射!!!**

逻辑删除的实现

步骤:

①数据库和实体类添加逻辑删除字段(约定字段值为1时逻辑删除,为0时未逻辑删除)

②在对应删除字段的属性上加一个@TableLogic注解(添加该注解后,我们在做删除操作时mybatis会自定将删除语句改为修改逻辑删除字段的修改语句)

每个表都会有逻辑删除,那么对应的每个表的实体类都会有一个deleted(逻辑删除字段);所以我们可以全局指定,这样就不用在每个表的逻辑删除字段上加@TableLogic注解了

mybatis-plus:

  global-config:

    db-config:

      logic-delete-field: deleted # 全局逻辑删除的实体字段名(属性名)(since 3.3.0,配置后可以忽略不配置步骤2)

      logic-delete-value: 1 # 逻辑已删除值(默认为 1)

      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

代码举例:

public class User {

    private Long id;

    private String name;

    private Integer age;

    private String email;

    /**

     * 当前属性对应的列就是逻辑删除的状态字段,

     * 当删除数据时,自动变为修改此列的属性值,默认0未删除;1删除

     * 当你查询数据的时候,默认只查询delete=0的数据

     */

    //逻辑删除字段

    @TableLogic

    private Integer deleted;

}

乐观锁

思想

乐观锁的基本思想是,认为并发冲突的概率较低,因此不需要提前加锁,而是在数据更新阶段进行冲突检测和处理。乐观锁的核心思想是"先修改,后校验"。在乐观锁的应用中,线程在读取共享资源时不会加锁,而是记录特定的版本信息。

悲观锁的基本思想是,在整个数据访问过程中,将共享资源锁定,以确保其他线程或进程不能同时访问和修改该资源。悲观锁的核心思想是"先保护,再修改"。在悲观锁的应用中,线程在访问共享资源之前会获取到锁,并在整个操作过程中保持锁的状态,阻塞其他线程的访问。

使用乐观锁

启动类

@SpringBootApplication

@MapperScan("com.atguigu.mapper")

public class Main {

    public static void main(String[] args) {

        SpringApplication.run(Main.class,args);

    }

    /**

     * 将mybatis-plus插件导入到ioc容器步骤:

     * ①创建一个方法,在该方法中创建一个装所有插件的对象mybatisPlusInterceptor

     *          在方法中通过该对象添加想要的插件

     * ②返回该对象,同时将该对象加入到ioc容器中

     *

     * 使用乐观锁的步骤:

     * ①导入乐观锁插件(在启动类中)

     * ②在实体类对应乐观锁字段的属性上添加@Version注解

     *     注意:是实体类对应的数据库表也要添加一个乐观锁列

     * ③正常更新使用

     */

    //将mybatis-plus插件导入到ioc容器

    @Bean

    public MybatisPlusInterceptor plusInterceptor(){

        //创建一个mybatis-plus插件集合,所有的插件都集中在此(分页插件,乐观锁插件...)

        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();

        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

        //添加乐观锁(版本号)插件;mybatis-plus会在更新的时候,每次帮我们对比版本号字段和让版本号加1

        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        return mybatisPlusInterceptor;

    }

}

实体类

@TableName//可以不加,使用实体类的名字作为表名!忽略大小写

//BaseMapper->User实体类-》实体类名-》表名数据库操作

//当数据库的表名和实体类命名不同(忽略大小写),使用@TableName注解指定表名

public class User {

    private Long id;

    private String name;

    private Integer age;

    private String email;

    /**

     * 当前属性对应的列就是逻辑删除的状态字段,

     * 当删除数据时,自动变为修改此列的属性值,默认0未删除;1删除

     * 当你查询数据的时候,默认只查询delete=0的数据

     */

    //逻辑删除字段

    @TableLogic

    private Integer deleted;

    @Version

    private Integer version;

}

防止全表数据伤处删除与更新 

针对 update delete 语句 作用: 阻止恶意的全表更新删除

添加一个防止全表更新删除的拦截器(也是一个插件)

@Bean

public MybatisPlusInterceptor mybatisPlusInterceptor() {

  MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

  interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());

  return interceptor;

}

}

http://www.dtcms.com/wzjs/3737.html

相关文章:

  • 什么是电子商务网站建设与管理十大经典口碑营销案例
  • 照明公司网站制作百度咨询电话 人工客服
  • 佛山医疗网站建设itmc平台seo优化关键词个数
  • 设计网站物理结构怎么做深圳网络推广平台
  • 做网站背景全覆盖的代码seo标题关键词怎么写
  • 聊城手机网站建设seo排名app
  • 常平网站建设公司前端培训
  • 上海成品网站上海优化排名网站
  • 千岛湖网站建设视频号广告推广
  • 建材装修网站建设seo技术培训价格表
  • 寻找长沙网站建设如何建立网站平台
  • 烟台正规网站建设淘宝培训
  • 策划书范文案例成都百度网站排名优化
  • 专门做电子书的网站有哪些网络营销的优缺点
  • 哪个网站可以免费做国外网站太原网络推广公司
  • 网站怎么做后台博客程序seo
  • 网站建设资料清单刷关键词的平台
  • 冒险岛cms是什么意思长安seo排名优化培训
  • 前端的网站重构怎么做口碑营销策划方案
  • 西安信创谷歌优化怎么做
  • 上传下载网站建设360站长
  • 众筹网站开发分析报告中文搜索引擎
  • 网站建设 手机网站南京百度提升优化
  • 做动态网站该看的书佛山疫情最新消息
  • 网站开发概要设计书模板如何宣传推广自己的产品
  • php制作网页教程seo自己怎么做
  • 网站开发的工作好做吗杭州seo博客有哪些
  • 两学一做学习教育网站网络营销软件站
  • wordpress菜单栏图标惠州网站seo
  • 找外包公司做个网站多少钱门户网站软文