首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mybatis-Plus增强包

具体拓展体现在数据自动填充(类似JPA审计)、关联查询(类似sqljoin)、自动建(仅支持mysql)、冗余数据自动更新、动态条件等功能做了补充完善。...@Bind*系列注解用在对象上即表达一对一,注解在List上便表达一对多意思,外部对象本身就是查询集合情况下便是多对多场景了。...,多数情况下会使用sqljoin语法,另一种方案做数据冗余,讲其他字段作为当前字段,但是牵扯一个数据修改后同步问题,本框架可以解决。...新增注解,同步@Tableprimary属性,在多个Entity映射一张情况下,确定主Entity哪个,数据生成时候根据主表来生成。...> 中间Entity,需要对应创建其Mapper selfField String "Id" 关联Entity所需自身字段 selfMidField String 关联Entity所需自身字段

1.3K00

mybatis-plus使用 ------ 进阶

一、ActiveRecord: Active Record(活动记录),一种领域模型模式,特点一个模型类对应关系型数据库一个,而模型类一个实例对应一行记录。...调用deleteAll方法,会删除tb_user所有数据,employeeDao调用deleteAll方法,会删除tb_employee所有数据。...说明deleteAll方法有效。不过在运行这两个测试,由于是全删除操作,所有要先把执行分析插件关了。 (二)、逻辑删除: 其实数据并不会轻易删除掉,毕竟数据收集不易,所以就有了逻辑删除。...,就是把逻辑删除字段值设置为-1;逻辑删除字段-1再执行查询操作,sqlSELECT ... FROM tb_user WHERE id=?...AND logic_flag=1,所以查询结果null。 五、公共字段自动填充: 我们知道,当我们进行插入或者更新操作,没有设置值属性,那么在数据要么为null,要么保留原来值。

2.4K70
您找到你想要的搜索结果了吗?
是的
没有找到

Jetpack组件之Room

优势 拥有SQLite所有操作功能。 使用简单,通过注解方式实现相关功能,编译自动生成实现类impl。 与LiveData、LifeCycle及Paging天然支持。...Entity:表示数据库。 DAO:包含用于访问数据库方法。 应用使用 Room 数据库来获取与该数据库关联数据访问对象 (DAO)。...然后,应用使用每个 DAO 从数据库获取实体,然后再将对这些实体所有更改保存回数据库。 最后,应用使用实体来获取和设置与数据库表列相对应值。Room架构图如图所示。...//exportSchema = true 生成数据库创建或升级等操作及字段描述json文件 //修改数据库版本直接通过version修改 //SkipQueryVerification注解编译时候是否验证...每个Entity至少有一个字段作为主键,如果想让数据库为字段自动分配ID,可以使用autoGenerate,如果Entity想有符合主键,可以使用@Entity注解里primaryKeys,设置复合主键

1.8K20

​MyBatis-plus 从入门到入土

主键名为id列名为id,实体类字段名为id),无需使用该注解显式指定主键,mp会自动关联。若类字段名和列名不一致,可用value属性指定列名。...字段填充策略 通过fill属性指定,字段时会进行自动填充 @Version 乐观锁注解 @EnumValue 注解在枚举字段上 @TableLogic 逻辑删除 KeySequence 序列主键策略...oracle序列主键需要使用这种方式 ASSIGN_ID 没有手动设置主键,即实体类主键属性为,才会自动填充使用雪花算法 ASSIGN_UUID 实体类主键属性为,才会自动填充使用...自动填充 中常常会有“新增时间”,“修改时间”,“操作人” 等字段。比较原始方式,每次插入或更新,手动进行设置。...注意,自动填充仅在该字段时会生效,若该字段不为,则直接使用已有的值。

1.5K20

MyBatisPlus详解

特性 支持数据库 架构 快速开始 创建user DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT...GUID:采用无意义字符串,数据量增大造成访问过慢,且不宜排序。 最高位符号位,始终为0,不可用。 41位时间序列,精确到毫秒级,41位长度可以使用69年。...创建时间、修改时间、这些操作自动化完成,我们不希望手动更新 阿里巴巴手册:所有数据:gmt_create、gmt_modified几乎所有都要配置上!...在数据库增加一个delete字段 默认值为0 实体类同步 配置逻辑删除 测试删除 可以看到,测试删除操作,实际上走更新操作,并不是删除操作 测试查询 会跟上where...使用 导入插件 配置项目为测试环境 条件构造器 Wrapper十分重要 复杂sql就靠它 使用 判断 //查询name不为,并且邮箱不为用户,年龄大于18用户

26410

MyBatis-Plus使用详解

主键名为id列名为id,实体类字段名为id),无需使用该注解显式指定主键,mp会自动关联。若类字段名和列名不一致,可用 value 属性指定列名。...oracle序列主键需要使用这种方式 ASSIGN_ID   没有手动设置主键,即实体类主键属性为,才会自动填充使用雪花算法 ASSIGN_UUID   实体类主键属性为,...字段字符串类型,只组装非空字符串;对其他类型字段,等同于NOT_NULL NEVER :不加入SQL。...自动填充 中常常会有“新增时间”,“修改时间”,“操作人” 等字段。比较原始方式,每次插入或更新,手动进行设置。...注意,自动填充仅在该字段时会生效,若该字段不为,则直接使用已有的值。

1.5K20

【Jetpack】Room 预填充数据 ( 安装 DB Browser for SQLite 工具 | 创建数据库文件 | 应用设预填充数据对应数据库文件 | 预填充数据库表字段属性必须一致 )

一、Room 预填充数据简介 在 Android 中使用 Room 框架 , 创建 SQLite 数据库 , 有时需要预填充一些数据 , 这些数据一般都是来自 assets 资源目录 ; 如果用户首次打开应用...将创建第一个字段 , 名称设置为 id , 类型仍为 INTEGER 不变 , 将该字段设置为 非 / 自增 / 主键 ; 生成 SQL 语句如下 : CREATE TABLE "" ( "id...age 字段属性不同 , 这里 在 DB Browser for SQLite 工具设置 age 字段为非字段 ; 右键点击数据库 , 在弹出右键菜单 , 选择 " 修改 " 选项..., 将 age 属性设置为非 ; 六、完整代码示例 ---- 本博客代码在上一篇博客 【Jetpack】Room 销毁重建策略 ( 创建临时数据库 | 拷贝数据库数据 | 删除旧表...| 临时数据库重命名 ) 基础上 , 添加了 由 DB Browser for SQLite 工具制作填充数据 文件 ; 1、Entity 实体类代码 该实体类 , 暂时只保留 id ,

40020

【MySQL】约束

一、属性 两个值:null(默认) 和 not null(不为) 数据库默认字段基本都是字段,但是实际开发,尽可能保证字段不为,因为数据为没办法参与运算,任何数与 null 相加都为 null...gender 字段就不能为空了: 此时我们插入数据,给 gender 字段会报错: 但是我们不给值,让它使用默认值就可以插入: 所以 not null 和 default 同时出现时,它们并不冲突...值由原来 1 变成 00001,这就是 zerofill 属性作用,如果宽度小于设定宽度(这里设置 5),自动填充 0;要注意,这只是最后显示结果,在 MySQL 实际存储还是1...在创建时候,在所有字段之后,使用 primary key (主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。...六、自增长 auto_increment:对应字段,不给值,会自动被系统触发,系统会从当前字段已经有的最大值 +1 操作,得到一个新不同值。通常和主键搭配使用,作为逻辑主键。

9910

【MySQL数据库】数据库约束

;注意 1.主键由多个字段组成,不能直接在字段名后面声明主键约束。...一个只能有一个字段使用 auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键一部分)。..., name varchar(20) not null, address varchar(20) not null );唯一性约束(unique) 唯一约束(Unique Key)所有记录字段值不能够重复出现...column default null;零填充约束(zerofill) 插入数据字段长度小于定义长度,会在该值前面补上相应0。...使用zerofill ,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围原值2倍,例如,有符号为-128~+127,无符号为0~256。

5.6K40

30个类手写Spring核心原理之自定义ORM(上)(6)

e.printStackTrace(); } } return result; } 上面巧妙地利用反射机制读取Class信息和Annotation信息,将数据库列和类字段进行关联映射并赋值...: /** * 删除一条记录 * @param entity entityID不能为,如果ID为,其他条件不能为都为不予执行 * @return */ boolean delete...Exception; (4)规定修改方法接口模型为: /** * 修改一条记录 * @param entity entityID不能为,如果ID为,其他条件不能为都为不予执行...entityID不能为,如果ID为,其他条件不能为都为则不予执行 * @return */ boolean delete(T entity) throws Exception...entityID不能为,如果ID为,其他条件不能为都为则不予执行 * @return * @throws Exception */ boolean

49730

mysql简单基础

字符串:varcahr,char char表示固定字符串比如char(2)需要2位,不足填充空格 varchar表示可变长字符串 text:储存大文本,一般大于4000使用。...约束 主键primary key:物理上储存数据 非not null:不允许为 唯一unique:唯一键,不允许重复 默认default:设置默认,不输入会自动填充默认值 外键foreign key...你show databases; 就会看到 我们刚刚创建数据库python_data。 但是还记得我们用图形化工具创建数据库指定了编码utf8?...进入数据库:user 数据库名; 查看当前所在数据库:select database(); 查看当前数据库中所有:show tables; 创建:create table 名(字段1 类型,字段...查询where: 取出id小于60所有数据。

79230

Hibernate注解之基本注解注解使用

,和Entity配合使用,指定实体类对应数据库信息 name :可选,指定名称,默认和类名一样,只有在不一致情况下才会指定名 catalog : 可选,表示Catalog名称,...01 TemporalType.TIMESTAMP 两者兼备,这个默认 @Column - 可将属性映射到列,使用该注解来覆盖默认值,@Column描述了数据库字段详细定义...,但是我们也可以使用这个注解改变这个名称 这个注解用来设置自动生成外键属性,比如外键名称,非…… name 指定外键名称 nullable 指定外键是否为,默认true...unique 生成唯一约束,就是这个字段值唯一,默认false @JoinTabl 涉及到多对多映射关系时候,用来定义第三名,和字段名称。...name 设置第三张名称 joinColumns 设置当前实体类对应在第三张外键字段名称 inverseJoinColumns 设置另外一个实体类对应在第三张外键字段名称

1.9K10

进阶!MyBatis-Plus(基于 Springboot 演示)

这里演示一个查询所有的方法,所以使用了 selectList ,其参数一个条件,这里先置为。...神奇发现,我们不需要在 sql 中进行设置了,所有的配置都被自动做好了,更新内容和 id 都被自动填充好了 (3) 自动填充 自动填充填充什么内容呢?...首先我们需要知道,一般来说创建时间,修改时间,我们总是希望能够给根据插入或者修改时间自动填充,而不需要我们手动去更新 可能以前项目不是特别综合或需要等原因,有时候也不会去设置创建时间等字段,...下面还有一些注意事项: 注意事项: 填充原理直接给entity属性设置值!!!...悲观锁下,员工 B 只能在 员工 A 操作完以后才能操作,这样能保证数据只有一个人在操作 C:MP 乐观锁插件 意图: 要更新一条记录时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录

58830

【Note_01】通用 mapper

, entitys.size()); } } 三、常用注解 名称 作用范围 含义 注释 @Table 实体类 建立实体类与数据库之间对应关系 默认类名首字母小写 @Column 实体类属性...自增主键 属性:strategy = GenerationType.IDENTITY @Transient 实体类属性 标识实体类与数据库不对应字段 非数据库字段 四、CRUD 4.1 select...* 补充 ⇨ insertSelective(Entity entity)属性为使用默认值 4.3 updateByPrimaryKey(Entity entity) * 根据主键修改 * mapper...* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为不更新【推荐】 4.4 delete(Entity entity) * 根据实体类删除 * mapper...自动生成SQL ⇩ entity则删除所有 delete from user where username = ?

43000

Mybatis-plus常用API全套教程,看完没有不懂

,这里我们先设置条件为,查询所有。...配置日志 我们所有的sql现在不可见,我们希望知道它是怎么执行所有我们要配置日志输出 application.yml文件添加日志配置 #配置日志 mybatis-plus: configuration...图片 自动填充 创建时间、修改时间!这两个字段操作都是自动化完成,我们不希望手动更新!阿里巴巴开发手册:所有的数据库都要配置上gmt_create、gmt_modified!而且需要自动化!...乐观锁实现方式: 取出记录,获取当前version 更新,带上这个version 执行更新, set version = newVersion where version = oldVersion...1、在数据增加一个 deleted 字段2、实体类增加属性 @TableLogic //逻辑删除 private Integer deleted; 3、配置 // 逻辑删除组件!

39410

Mybatis-plus常用API全套教程,看完没有不懂

,这里我们先设置条件为,查询所有。...配置日志 我们所有的sql现在不可见,我们希望知道它是怎么执行所有我们要配置日志输出 application.yml文件添加日志配置 #配置日志 mybatis-plus: configuration...这两个字段操作都是自动化完成,我们不希望手动更新!阿里巴巴开发手册:所有的数据库都要配置上gmt_create、gmt_modified!而且需要自动化!...乐观锁实现方式: 取出记录,获取当前version 更新,带上这个version 执行更新, set version = newVersion where version = oldVersion...1、在数据增加一个 deleted 字段2、实体类增加属性 @TableLogic //逻辑删除 private Integer deleted; 3、配置 // 逻辑删除组件!

32020

Mybatis-plus常用API全套教程,看完没有不懂

,这里我们先设置条件为,查询所有。...配置日志 我们所有的sql现在不可见,我们希望知道它是怎么执行所有我们要配置日志输出 application.yml文件添加日志配置 #配置日志 mybatis-plus: configuration...图片 自动填充 创建时间、修改时间!这两个字段操作都是自动化完成,我们不希望手动更新!阿里巴巴开发手册:所有的数据库都要配置上gmt_create、gmt_modified!...乐观锁实现方式: 取出记录,获取当前version 更新,带上这个version 执行更新, set version = newVersion where version = oldVersion...1、在数据增加一个 deleted 字段2、实体类增加属性 @TableLogic //逻辑删除 private Integer deleted; 3、配置 // 逻辑删除组件!

41720

Mybatis-plus常用API全套教程,看完没有不懂

前言 官网: https://baomidou.com/ 创建数据库 数据库名为mybatis_plus 创建 创建user DROP TABLE IF EXISTS user; CREATE TABLE...,这里我们先设置条件为,查询所有。     ...配置日志 我们所有的sql现在不可见,我们希望知道它是怎么执行所有我们要配置日志输出 application.yml文件添加日志配置 #配置日志 mybatis-plus:   configuration...这两个字段操作都是自动化完成,我们不希望手动更新!阿里巴巴开发手册:所有的数据库都要配置上gmt_create、gmt_modified!而且需要自动化!...1、在数据增加一个 deleted 字段2、实体类增加属性  @TableLogic //逻辑删除  private Integer deleted; 3、配置 // 逻辑删除组件!

62840
领券