首页
学习
活动
专区
圈层
工具
发布

Spring boot Mybatis-XML方式通用Mapper插件(七)

OGNL方式配置,不限制返回值,但是必须和字段类型匹配 IDENTITY:取回主键的方式 DB2: VALUES IDENTITY_VAL_LOCAL() MYSQL: SELECT LAST_INSERT_ID...,可以有多个@Id注解的字段作为联合主键. 7.默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低). 8.实体类可以继承使用,可以参考测试代码中的tk.mybatis.mapper.model.UserLogin2...类. 9.由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型. 10....如果你的实体类中包含了不是数据库表中的字段,你需要给这个字段加上@Transient注解,这样通用Mapper在处理单表操作时就不会将标注的属性当成表字段处理!...主键策略(仅用于insert方法) 通用Mapper还提供了序列(支持Oracle)、UUID(任意数据库,字段长度32)、主键自增(类似Mysql,Hsqldb)三种方式,其中序列和UUID可以配置多个

3.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    写了个工具,让 CRUD 开发效率提升100倍,开源咯!

    最近在做一个项目,需要新建20多张表 相信大多数同学应该和我一样,都是比较讨厌创建新表这个工作的,因为每创建一张表,都要去创建实体类、创建增删改查的接口、编写增删改查的SQL代码等等,把这些事情做完,2...这是什么概念呢 现在我们只需要把这些代码拷贝到项目里,简单设置一下类的引用,增删改查这些基本功能,就已经可以直接给前端去调用了。...很多同学可能会问,如果是现有的数据表,再来这里添加一次感觉太麻烦了 这个问题我也遇到了,所以我做了一个识别建表SQL的功能,常见的数据库工具对于已经创建好的表,都提供建表语句的复制功能,只需要把建表SQL...4代码生成的原理 在说代码模版具体怎么配置之前,先给大家讲一下代码自动生成的原理 它由代码模版和动态参数组成,核心就是匹配 - 替换 首先,工具提供了很多动态参数,这些动态参数,对应的是我们填写的表名、...例如输入:order_number ,输出:OrderNumber 主键字段数据类型(对应Java)primary_key_type_java 用户选择的主键字段类型,会自动匹配对应的Java类型。

    52210

    零散的MySQL基础总是记不住?看这一篇就够了!

    关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念,还与Raymond F. Boyce于1974年共同定义了第三范式的改进范式——BC范式。...第一范式 定义:数据库中的所有字段(列)都是单一属性,不可再分的。这个单一属性由基本的数据类型所构成,如整型、浮点型、字符串等。 第一范式是为了保证列的原子性。 ?...第二范式 定义:数据库中的表不存在非关键字段对任一关键字字段的部分函数依赖 部分函数依赖是指存在着组合关键字中的某一关键字决定非关键字的情况 第二范式在满足了第一范式的基础上,消除非主键列对联合主键的部分依赖...第三范式 定义:所有非主键属性都只和候选键有相关性,也就是说非主键属性之间应该是独立无关的。 第三范式是在满足了第二范式的基础上,消除列与列之间的传递依赖。 ?...反范式设计时,需要考虑以下几个问题,分别是插入异常、更新异常和删除异常。 插入异常:如果某个实体随着另一个实体的存在而存在,即缺少某个实体是无法表示这个实体,那么这个表就存在插入异常。

    75451

    EntityFramework 外键值映射

    如果在 EF OnModelCreating 中配置了实体外键映射,也就是 SQL Server 中的 ForeignKey,那么我们在添加实体的时候,主实体的主键值会自动映射到子实体的外键值,并且这个操作在一个...,这时候第一个事务并不会回滚,因为它独立于第二个,所以,最后就会造成数据的不一致性,虽然几率非常点,但我们应该尽量避免。...我们先看datetime2和datetime这两个数据类型的具体区别在哪里。 官方MSDN对于datetime2的说明:定义结合了 24 小时制时间的日期。...问题来了,虽然EF已经把要保存的数据自动转为了datetime2类型,但是数据库中表的字段还是datetime类型!...因此我们在界面操作的都是DTO对象类型了,我们在定义的时候,为了避免更多的改动,依旧使用***Info这样的类名称作为DTO对象的名称,***代表表名对象。

    5.1K50

    数据库基础

    如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。...上面这个订单表的设计,它依赖的商品信息过多,应该将商品信息拆分出来一张表单独存放 商品表中存储商品相关信息,订单表中只存放商品 id,不存储名称等信息 总结 在日常工作中,我们在数据库设计方面基本上满足以上三个范式就可以了...char char(M) 类型一般需要预先定义字符串长度。...注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在设置 从 is_xxx 到 Xxx 的映射关系。...【强制】varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长 度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索 引效率。

    91740

    SpringBoot2.x系列教程(八)SpringBoot常用注解汇总

    随着Spring及Spring Boot的发展,基于Java的配置已经慢慢替代了基于xml的配置形式。本篇文章为大家整理和简介Spring Boot中常用的注解及其功能。...@Profile:提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。...与@Resource功能相似,但默认根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier。...根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Named。 @Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。...@Column:用来标识实体类中属性与数据表中字段的对应关系,如果字段名与列名相同,则可以省略。 @Id:表示该属性为主键。 @GeneratedValue:为实体生成唯一标识的主键提供生成策略。

    1.7K10

    flea-db使用之JPA接入

    在笔者的《JPA主键生成策略介绍》 中,介绍了 GenerationType.IDENTITY【适用于支持 主键自增长 的数据库系统,比如 MySQL】,详细内容可自行查看。...2.4 学生DAO层接口IStudentDAO 继承了抽象 Flea JPA DAO 层接口,并定义了两个方法,分别获取学生信息列表(分页)和学生总数。...initQuery 私有方法,它实际上用于返回一个已经组装好查询条件的 FleaJPAQuery 对象:getQuery(result) :在《flea-db使用之JPA封装介绍》 中的抽象 Flea...,调用 query 方法查询学生信息,并打印 Before :XXX;然后调用 update 方法更新该学生信息;最后再根据指定主键,调用 query 方法查询学生信息,并打印After : XXX。...,调用 query 方法查询学生信息,并打印 Before :XXX;然后调用 remove 方法删除指定主键的学生信息(里面会先去将学生实体信息查出来,然后再删除);最后再根据指定主键,调用 query

    39821

    EntityFramework Core 学习扫盲

    Data Annotations 在自定义的MyContext中添加以下属性信息,并在每个自定义的实体名称上部增加[Table("XXX")],其中XXX为开发者指定的表名称。...包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...,所以自定义数据类型时,一定要参阅目标数据库的数据类型定义。...主键 默认情况下,EF CORE会将实体中命名为Id或者[TypeName]Id的属性映射为数据库表中的主键。当然有些开发者不喜欢将主键命名为Id,EF CORE也提供了两种方式进行主键的相关设置。...生成值 前文中已经介绍过,假如属性被命名为Id/[TypeName]Id的形式,EF CORE会将该属性设置为主键。

    10.5K90

    写了个工具,CRUD 开发效率直接提升100倍!

    最近在做一个项目,需要新建20多张表 相信大多数同学应该和我一样,都是比较讨厌创建新表这个工作的,因为每创建一张表,都要去创建实体类、创建增删改查的接口、编写增删改查的SQL代码等等,把这些事情做完...这是什么概念呢 现在我们只需要把这些代码拷贝到项目里,简单设置一下类的引用,增删改查这些基本功能,就已经可以直接给前端去调用了。...很多同学可能会问,如果是现有的数据表,再来这里添加一次感觉太麻烦了 这个问题我也遇到了,所以我做了一个识别建表SQL的功能,常见的数据库工具对于已经创建好的表,都提供建表语句的复制功能,只需要把建表SQL...3代码生成的原理 在说代码模版具体怎么配置之前,先给大家讲一下代码自动生成的原理 它由代码模版和动态参数组成,核心就是匹配 - 替换 首先,工具提供了很多动态参数,这些动态参数,对应的是我们填写的表名、...例如输入:order_number ,输出:OrderNumber 主键字段数据类型(对应Java)$primary_key_type_java$ 用户选择的主键字段类型,会自动匹配对应的Java类型。

    1.4K41

    java 常用注解, 常用关键字

    但有时候我们需要定义Entity和Repository不在应用程序所在包及其子包,那么这时候就需要使用@EntityScan和@EnableJpaRepositories了 之前提到的Entity和Repository...@Temporal 用来设置Date类型的属性映射到对应精度的字段 @Enumerated 直接映射枚举类型的字段 5.0.1.2 Spring JPA : @Entity注解加在实体类上,定义对象将会成为被...@Table注解用来说明该实体类对应的表和数据库,其中name =“xxx",用来表示数据表的名字,catalog = “xxx"是数据库的名字 自增主键,一般自增主键的名字都会用id来表示,@Id注解表名是表的自增主键...@Enumerated是用来映射枚举类型的字段的,首先我们创建一个枚举类用来表示性别,在需要枚举类属性的实体类中,使用@Enumerated(EnumType.STRING)注解,另外还需要@Column...,用于调用 parameterType:指定参数类型,通常制定一个对象类型 7.0.1.4 删除 id:为当前操作定义了一个名字,用于调用 parameterType:指定参数类型,通常制定一个对象类型

    81910

    ‍面试官问:Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗? ‍我:看我回答...

    一、Mybatis执行插入语句后可以返回主键ID吗? 在想写什么内容的时候,正好看到一个基础面试题上有这个问题,就把它记录下来了。 ‍面试官:你说Mybatis执行插入语句后可以返回主键ID吗??...AFTER一般用于Mysql自增的情况下,BEFORE一般用于自定义的ID的获取。...keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中,也就是你实体类中,对应数据库的主键id。...最后在实体类中,要有主键的get与set方法,满足后,在impl层controller层,直接实体类.getId() 即可获取本次插入后的主键ID,返回前端即可。...一步一步道来: 可以直接使用Mybatis-Plus的sava方法,或者mapper层的insert方法,它都会将返回的结果自动填充进你映射的的实体类。从而可以直接获取到你的数据。

    3.7K20

    MySQL【知识改变命运】复习前1~11

    .删除表 dorp table [if exists] 表名; 3: CRUD 增删改查 > 1.新增-插入 insert into 表名 [列名[,列名]] values (值[,值]); > 指定了多少列名...,就需要指定多少值,值与列名一一对应,不指定列名,值的顺序与个数和表中定义列的顺序一一对应 2.查询操作 >a.全列查询 select * from 表名;//不加限制的查询会把表中所有的数据都查出来....: PRIMARY KEY 在校验的方式上相当于NOT NULL 与UNIQUE 的组合,建议为每张表中定义自增主键 4.外键约束:FOREIGN KEY 一个表中的字段与另一个表中的主键或者唯一键建立关联关系...,只能出现有在复合主键的表中(多个候选键),如果有一个字段只能依赖与符合主键中的一个列,那么就需要把这个关系剔除掉,重新建表....第三范式:在第二范式的基础上,消息传递依赖,为不同的实体单独建表 关系模型 一对一关系:为每个实体单独建表,其中一张表中加一个字段完成对另一张表的引用(建立关系) 一对多关系:为每个实体单独建表,在一这一方设置一个主键

    33510

    SpringBoot整合Spring-data-jpa

    主键生成策略 1.3. 配置 1.4. 创建一个实体类 1.5. 基本的查询 1.6. 自定义查询@Query 1.6.1. 使用HQL语句查询 1.6.2. 使用sql语句查询 1.6.3....GenerationType.SEQUENCE:在某些数据库中,不支持主键自增长,比如Oracle,其提供了一种叫做”序列(sequence)”的机制生成主键。...类似的,该策略一般与另外一个注解一起使用@SequenceGenerator,@SequenceGenerator注解指定了生成主键的序列.然后JPA会根据注解内容创建一个序列(或使用一个现有的序列)。...import java.lang.String; /** * JpaRepository的接口,相当于mapper * 泛型:JpaRepository :第一个是实体类的类型...Byxxx(where xxx=xxx),除了根据主键查询,否则返回的都是List * 其中查询的条件对应的类型必须相同 */ List findByName(String name

    1.8K10

    【BCVP升级】泛型主键的使用

    所以我就尝试了这个新课题:使用泛型主键,这样拿到这个项目的时候,自己修改下主键类型,就可以运行了,不过目前还没有百分百完善,int主键已经调通,其他类型主键,比如Guid或者自定义string还没有完成生产化...1、自定义特性 配置服务SqlsugarSetup 既然要实现泛型主键,那我们就需要对主键进行处理,因为只有int类型的主键才需要自增,其他类型的是不需要的,当然如果在非int类型的主键上配置自增了也是会报错的...修改实体基类RootEntityTkey 这里我重写了一个基于泛型主键的实体基类RootEntityTkey,因为有了上边的配置,所以就不需要在主键上增加自增了,只需要配置一个属性:是否为主键即可,因为肯定不为空...2、设计泛型主键结构 实体基类增加泛型参数 上边我们已经重新设计了一个实体基类,在它的基础上,我们可以先增加一个泛型参数: public class RootEntityTkey where...定义好了基类,那我们就需要动手数据库实体类了,可能稍微复杂一点,因为会涉及另一个重要的概念。

    90710

    欢迎使用开源的代码生成器Code-Builder

    在基础设计上是可以在任何数据库类型中来完成它的生成任务的,不过初版本仅支持了MySQL、MariaDB这两种数据库类型,在code-builder后期更新版本中会把主流的数据库进行添加。...生成模板选型 目前code-builder内部采用了freemarker模板来完成实体类的自动生成,模板由使用者来自定义编写,内部预留了使用其他模板的方式,如果你需要使用别的模板,如:Velocity,...dbDriverClassName:数据库驱动类名,根据不用的数据库类型配置不同的驱动类名,默认根据dbType使用内部定义的类名,如需自定义可以设置。...排除生成实体后的前缀 数据库设计有时需要添加前缀,如:app_、sys_等,实际生成实体后前缀则是并不想展示,那么配置参数ignoreClassPrefix就可以自动排除前缀,如下所示: 主键,false:非主键 foreignKey 是否为外键,数据类型:java.lang.Boolean,true:外键,false:非外键 size

    1.2K10

    分库分表的 9种分布式主键ID 生成方案,挺全乎的

    而sharding-jdbc 内置了两种分布式主键生成方案,UUID、SNOWFLAKE,不仅如此它还抽离出分布式主键生成器的接口,以便于开发者实现自定义的主键生成器,后续我们会在自定义的生成器中接入...在使用 sharding-jdbc 分布式主键时需要注意两点: 一旦 insert 插入操作的实体对象中主键字段已经赋值,那么即使配置了主键生成方案也会失效,最后SQL 执行的数据会以赋的值为准。...com.xiaofu.sharding.key.MyShardingKeyGenerator [自定义主键 SPI 配置] 上面这些弄完我们测试一下,配置定义好的主键生成类型 XXX,并插入几条数据看看效果...自定义 Tinyid 主键类型 Tinyid 服务搭建完下边在项目中引入它,新建个 tinyid_client.properties 文件其中添加 tinyid.server 和 tinyid.token...=tinyid 测试 Tinyid 主键 向数据库插入订单记录测试发现,主键ID字段 order_id 已经为趋势递增的了, Tinyid 服务成功接入,完美!

    3.7K20
    领券