1 代码生成器简介代码生成器可以自动生成MybatisPlus代码。如果不愿意手动编写和数据表对应的实体类及相关映射文件,MybatisPlus为我们提供了相关的效率提升工具(偷懒神器)——代码生成器,它可以读取数据库中的表信息,生成相应的可以供我们使用 MybatisPlus 代码。与 Mybatis 的代码生成器 Mybatis Generator 二者的区别是:Mybatis Generat
1 自动填充功能介绍自动填充功能可以在插入或修改时为对象属性自动赋值。之前学习了逻辑删除字段,在向数据库插入数据时,都需要设置 isDeleted=0,这在进行频繁地数据插入时就显得有些繁琐,于是 MybatisPlus 就为我们提供了自动填充的功能。修改实体类,为需要自动填充的字段在注解 @TableField 中添加 fill 属性。@TableLogic @TableField(value
1 逻辑删除的概念逻辑删除不会在数据库中删除数据,只是通过一个字段用来标识被删除的记录,数据仍然保存在数据库中。在实际的工作当中,因为数据非常重要,为了防止因用户误操作删除数据后无法恢复的问题,我们通常不会对数据做物理删除,即将数据从数据库中直接删除。而是多采用逻辑删除的方式,即不会真正在删除库删除数据,而是使用一个字段来标识它已经被删除。如使用 isDeleted 字段标识该条记录是否已经被删除
1 根据ID查询 1.1 在对象中设置ID 首先创建要查询的对象,并通过 set() 方法设置要查询的记录ID。 在控制台输出的SQL语句如下:==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?==> Parameters: 12(Integer)<== Columns:
1 什么是 Active RecordActive Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。 在 Active Record 模式中,对象中既有持久存储的数据,也有针对数据的操作,Active Record 模式把数据增删改查的逻辑作为对象的一部分,处理对象的用户知道如何读写数据,提升了开发效率。 其实底层仍然
0 插入数据因之前删除了部分数据,要体现分页查询的效果,最好添加一些数据。1 增加插件在项目中创建一个配置类,在其中增加 MybatisPlus 中用于分页查询的插件,并引入相关类。 因为不同的数据库,用于分页的关键字也有差异,所以需要指定数据库类型:DbType.MYSQL。需要在类及方法上添加注解,否则不会被 SpringBoot 扫描到。类名上添加注解 @Configuration,方法上添
1 读写分离1.1 什么是读写分离?将数据库的查询和其他需要使数据库数据发生变化的操作进行分开的操作。基本的原理:让主数据库处理事务性的插入、修改、删除操作;让从数据库处理查询操作。1.2 为什么要做读写分离?在数据库中数据极速增长的情况下,数据库的瓶颈不在于存储,而是计算,即查询。数据量越大,查询的效率越低,对于越复杂的查询语句,其消耗服务器的资源越强,有时甚至不输于死循环。2 读写分离的方案M
1 什么是 MyCat随着互联网的发展,数据的量级也是呈指数式的增长,从GB到TB到PB。传统的关系型数据库已经无法满足快速查询与插入数据的需求。那么如何使用关系型数据库解决海量存储的问题呢?此时就需要建立数据库的集群,那么为了提高查询性能,我们可以将一个数据库的数据分散到不同的数据库中存储,或者在集群中对不同数据做读写分离。于是就需要一个工具来接收程序对数据的请求,同时又能对集群数据库进行管理。
1 Stream 中的串行流和并行流Stream 的串行流1、所有的 Collection 集合都可以通过 Stream 默认方法获取流: list.stream();2、Stream 接口的静态方法 of 可以获取数组对应的流: Stream.of("zhangsan", "lisi", "wangwu", "zhaosi");Stream 的并行流1、并行流是把一个内容分成多个数据块,并用不同
1、流的创建1.1、 使用集合对象的 stream() 方法创建流数组对象,创建流时需要使用 Arrays.stream() 方法;集合类对象,可以在对象后直接使用 .stream() 方法转换为流;Map 对象不能直接转换为流,但是可以对 Map 对象中的 key 、 value、 entrySet 分别转换为流方便后续使用。//数组对象 int[] ints = new int[]{1,3,5
1、介绍Stream流是用于操作数据源如集合、数组等所生成的元素序列;集合是用于存储数据,而流是用于对集合内的数据进行计算。Stream不是数据结构,不会保存数据。Stream不会修改原来的数据源,它会将操作后的数据保存到另外一个新的对象中。Stream是惰性求值,流在中间处理过程中,只是对操作进行了记录,并不会立即执行,需要等到执行终止操作的时候才会进行实际的计算。Stream可以帮助我们更加聚
之前在研究 TCP 通信的双向通信时,客户端和服务端必须交替请求,才能保持正常会话。 现在就来对这个问题进行解决吧。
MyBatisPlus中的 QueryWrapper 对象,可以让用户自由构造SQL查询条件,可以快速上手并且有效提高开发效率。 逻辑条件 或条件语句 且条件语句 in 查询 notin 查询 or and in notin 比较判断 等于 不等于 大于 大于等于 小于 小于等于 between 条件语句 eq ne lt le gt ge between 模糊查询 like notlike 分组
MybatisPlus 是 Mybatis 的升级版本,是对 Mybatis 的简化,因为他们的口号就是“为简化开发而生”。
数据对于我们来说是一项最重要的资产,因为数据丢失带来的损失,对于一家公司来说,有时也是毁灭性的。 那么如何确保数据安全,不因断电或系统故障带来数据丢失呢?
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。
TCP通信主要用于可靠性数据的传输,在系统间调用或系统内部不同组件间的调用非常普遍。
通过Java中的反射机制,获取类的构造方法并创建该类,获取类的方法及成员变量,并在创建的类中调用该类所属的方法及成员变量。
当我们要获取类的信息及方法,利用Java中的反射机制,便于我们更加灵活的编写代码,可以在程序运行时装配代码,还可以实现动态代理。
1 super访问构造函数在继承中,子类的构造函数必须依赖父类提供的构造函数 super(参数列表) 访问父类的构造函数 super 调用父类的构造函数,必须在子类构造函数的第一行//父类public class Person{ public Person(){}}//子类public class Student extends Person{ public Student(){
1 this 关键字1.1 this 访问本类属性this代表当前对象的一个引用所谓当前对象,指的是调用类中方法或属性的那个对象this只能在方法内部使用,表示对“调用方法的那个对象”的引用this.属性名,表示本对象自己的属性对象的一个属性被方法或构造器的参数屏蔽(同名参数)public class Person{ String name; public Person(String
1 在Java中解析XML文件共有四种方式A、DOM方式解析XML数据树结构,有助于更好地理解、掌握,代码易于编写,在解析过程中树结构是保存在内存中,方便修改B、SAX方式解析采用事件驱动模式,对内存消耗比较小,适用于仅处理xml中的数据时使用C、JDOM方式解析大量采用了 Collections 类D、DOM4J方式解析JDOM的一种智能分支,合并了许多超出基本XML文档表示的功能; 性能优越,
1、启动Jacoco指定需要监测的包名,监测的ip及端口java -javaagent:jacocoagent.jar=includes=com.test.*,output=tcpserver,port=6300,address=localhost,append=false -jar .\JacocoTest-1.0-SNAPSHOT.jar2、执行测试用例3、生成 dump,并重置覆盖率统计指定
多线程环境下,我们经常需要多个线程的并发和相互通信。其中,有一个重要的多线程并发协作模型,即“生产者/消费者模式”。
1 线程的锁的synchronized、Lock、volatile区别1.1 synchronized 和 volatile 区别用法:volatile 关键字解决的是变量在多个线程之间的可见性;synchronized 关键字解决的是多个线程之间访问共享资源的同步性;多线程访问 volatile 时,程序不会发生阻塞;在访问 synchronized 修饰的方法或代码块时,会出现阻塞;volat
1 JUC并发包JUC 即 java.util.concurrent 类的简称。主要为并发编程提供了许多通用工具类。2 线程的 ThreadLocal 本地缓存对象线程范围内的共享变量,每个线程只能访问自己的数据,而不能访问其它线程数据。每个线程调用全局 ThreadLocal 对象的 set 方法,相当于往其内部的 map 中增加一条记录,key 分别是各自的线程,val
线程是操作系统中的独立个体,但这些个体如果不经过特殊处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。例如之前处理的线程同步,就是一种线程间通信的方式。
1 线程的同步安全1.1 线程安全问题设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性问题。比如多个渠道共同出售电影票,如果没有进行安全控制,就会出现座位被超卖的情况。我们不可能让多个人坐在同一个座位上。如果并发程序连最基本的执行结果准确性都无法保证,那并发编程就没有任何意义。1.2 出现数据不正确的原因如果一个资源(变量/对象/文件/数据)同时被很多线程使用,就可
1 线程的生命周期在线程的生命周期中,要经过新建new、就绪runnable、运行running、阻塞blocked和死亡dead 5种状态。当线程启动后,它不可能一直“霸占”CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行和阻塞之间切换。线程的生命周期五个阶段1、新建状态,当程序使用new关键字创建了一个线程之后,该线程
线程是进程的一个执行单元,是进程内可调度实体;线程是比进程更小的独立运行的基本单位; 线程也被称为轻量级进程。使用的目的不同,创建线程的方式也不同。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号