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

三五互联网站管理登录地址扬州网络推广公司

三五互联网站管理登录地址,扬州网络推广公司,盘锦做网站谁家好,天津网站策划目录 1、ActiveRecord 1.1 开启AR之旅(根据主键 id 进行查询) 1.2 新增数据 1.3 更新操作 1.4 删除操作 1.5 根据条件查询 2、Oracle 主键 Sequence 2.1 部署Oracle环境 2.2 创建表以及序列 2.3 jdbc驱动包 2.4 修改application.properties 2.5 配置序列…

目录

1、ActiveRecord

1.1 开启AR之旅(根据主键 id 进行查询)

1.2 新增数据

1.3 更新操作

1.4 删除操作

1.5 根据条件查询

2、Oracle 主键 Sequence

2.1 部署Oracle环境

2.2 创建表以及序列

2.3 jdbc驱动包

2.4 修改application.properties

2.5 配置序列

2.6 测试

3、MyBatis-Plus的插件

3.1 mybatis的插件机制

3.2 执行分析插件

3.3 性能分析插件

3.4 乐观锁插件

3.4.1 主要适用场景

3.4.2 插件配置

3.4.3 注解实体字段

3.4.4 测试

3.4.5 特别说明

4、SQL注入器实现自定义全局变量

4.1 编写MyBaseMapper

4.2 编写MySqlInjector

4.3 编写FindAll

4.4 注册到Spring容器(自定义的SQL注入器 MySqlInjector)

4.5 测试

5、自动填充功能

5.1 添加@TableField注解

5.2 编写MyMetaObjectHandler

5.3 测试

6、逻辑删除(标记隐藏展示)

6.1 修改表结构

6.2 配置

6.3 测试

7、通用枚举

7.1 修改表结构

7.2 定义枚举

7.3 配置

7.4 修改实体

7.5 测试

8、代码生成器

8.1 创建工程

8.2 代码

8.3 测试

9、MyBatisX 快速开发插件


1、ActiveRecord

ActiveRecord(简称AR)一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于ActiveRecord 往往只能感叹其优雅,所以我们也在 AR 道路上进行了一定的探索,喜欢大家能够喜欢

1.1 开启AR之旅(根据主键 id 进行查询)

在MP中,开启AR非常简单,只需要将实体对象继承Model即可

Model中实现了各种各样的方法:

因此我们可以直接通过User对象来调用CURD方法

测试用例:(根据主键 id 进行查询)

但虽然我们在测试用例中没有显式的使用Mapper方法,但在ModelCURD的底层实现中依然是需要使用我们之前创建的继承了BaseMapperUserMapper来进行操作,所以Mapper接口是不能省略的,一定要切记!

测试结果

1.2 新增数据

测试用例:

测试结果:

数据库表结果:

1.3 更新操作

测试用例:

结果:

1.4 删除操作

测试用例:

结果:

1.5 根据条件查询

测试用例:

结果:

2、Oracle 主键 Sequence

mysql中,主键往往是自增长的,这样使用起来是比较方便的,如果使用的是Oracle数据库,那么就不能使用自增长了,就得使用Sequence 序列生成id值了

2.1 部署Oracle环境

为了简化环境部署,这里使用Docker环境进行部署安装Oracle

# 拉取镜像

docker pull sath89/oracle-12c

# 创建容器

docker create --name oracle -p 1521:1521 sath89/oracle-12c

# 启动

docker start oracle && docker logs -f oracle

# 部分启动过程省略

……

PL/SQL procedure successfully completed.

Starting import from '/docker-entrypoint-initdb.d':

ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory

Import finished

Database ready to use. Enjoy! ;)

# 通过用户名密码即可登录

用户名和密码为: system/oracle

下面使用navicat12进行连接并操作oracle:

需要注意的是:由于安装的Oracle是64位版本,所以navicat也是需要使用64为版本,否则连接不成功。

2.2 创建表以及序列

建表语句:

--创建表,表名以及字段名都要大写

CREATE TABLE "TB_USER" (

"ID" NUMBER(20) VISIBLE NOT NULL ,

"USER_NAME" VARCHAR2(255 BYTE) VISIBLE ,

"PASSWORD" VARCHAR2(255 BYTE) VISIBLE ,

"NAME" VARCHAR2(255 BYTE) VISIBLE ,

"AGE" NUMBER(10) VISIBLE ,

"EMAIL" VARCHAR2(255 BYTE) VISIBLE

)

--创建序列

CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1

2.3 jdbc驱动包

由于版权原因,我们不能直接通过maven的中央仓库下载oracle数据库的jdbc驱动包,所以我们需要将驱动包安装到本地仓库:

安装成功:

安装完成后的坐标:(测试是否可以成功导入)

导入成功:

2.4 修改application.properties

对于application.properties的修改,需要修改2个位置,分别是:

2.5 配置序列

使用Oracle的序列需要做2件事情:

Ⅰ、需要配置MP的序列生成器到Spring容器:

Ⅱ、在实体对象(pojo)中指定序列的名称:(这里clazzlong是因为id的类型也为long)

2.6 测试

测试用例:

结果:

3、MyBatis-Plus的插件

3.1 mybatis的插件机制

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

1. Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

2. ParameterHandler (getParameterObject, setParameters)

3. ResultSetHandler (handleResultSets, handleOutputParameters)

4. StatementHandler (prepare, parameterize, batch, update, query)

我们看到了可以拦截Executor接口的部分方法,比如update,query,commit,rollback等方法,还有其他接口的一些方法等

总体概括为:

1. 拦截执行器的方法

2. 拦截参数的处理

3. 拦截结果集的处理

4. 拦截Sql语法构建的处理

拦截器示例:(测试运行,会先进入对象代理plugin方法(此时它获取的target是一个MybatisSimpleExecutor对象),只会才会被intercept方法拦截,拦截到update方法之后,我们可以通过proceed()方法对其放行,然后再次进入plugin方法(此时它获取的target是一个MybatisDefaultParameterHandler对象),在这个过程中plugin方法一共会被执行四次,因为MyBatis 允许使用插件来拦截的方法就包括四种,所以每种都会在plugin方法中进行一次包装)

注入到Spring容器:

或者通过xml配置,mybatis-config.xml

3.2 执行分析插件

在MP中提供了对SQL执行的分析的插件,可用作阻断全表更新、删除的操作,注意:该插件仅适用于开发环境,不适用于生产环境

SpringBoot配置:(SQL分析插件)

测试:(测试全表的更新,SQL分析器的阻断效果)

结果:(可以看到,当执行全表更新时,会抛出异常,这样有效防止了一些误操作)

这是一个禁止的操作

如果是非全表的更新,那么会怎么样呢?

测试方法:

可以正常执行:

3.3 性能分析插件

性能分析拦截器,用于输出每条 SQL 语句及其执行时间,可以设置最大执行时间,超过时间会抛出异常

注意:该插件只用于开发环境,不建议生产环境使用

配置:(Mybatis-config.xml),其也可以在MybatisPlusConfig中进行配置

执行结果:(可以看到,执行时间为11ms。如果将maxTime设置为1,那么,该操作会抛出异常)

超时,抛出异常:

3.4 乐观锁插件

3.4.1 主要适用场景

意图:

当要更新一条记录的时候,希望这条记录没有被别人更新

乐观锁实现方式:

  • 取出记录时,获取当前version
  • 更新时,带上这个version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果version不对,就更新失败

3.4.2 插件配置

spring xml:

spring boot:

3.4.3 注解实体字段

需要为实体字段添加@Version注解

Ⅰ、为表添加version字段,并且设置初始值为1:

Ⅱ、为User实体对象(pojo)添加version字段,并且添加@Version注解(表示它是一个乐观锁):

3.4.4 测试

测试用例:(测试乐观锁)

执行日志:

可以看到,更新的条件中有version条件,并且更新的version为2。

如果再次执行,更新则不成功。这样就避免了多人同时更新时导致数据的不一致

3.4.5 特别说明

  • 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
  • 整数类型下 newVersion = oldVersion + 1
  • newVersion 会回写到 entity 中
  • 仅支持 updateById(id) 与 update(entity, wrapper) 方法
  • 在 update(entity, wrapper) 方法下, wrapper 不能复用!!!

4、SQL注入器实现自定义全局变量

我们已经知道,在MP中,通过AbstractSqlInjectorBaseMapper中的方法注入到了Mybatis容器,这样这些方法才可以正常执行

那么,如果我们需要扩充BaseMapper中的方法,又该如何实现呢?

下面我们以扩展findAll方法(自定义方法)为例进行学习

4.1 编写MyBaseMapper

其他的Mapper都可以继承该Mapper,这样实现了统一的扩展

如:

4.2 编写MySqlInjector

如果直接继承AbstractSqlInjector的话,原有的BaseMapper中的方法将失效,所以我们选择继承DefaultSqlInjector进行扩展

4.3 编写FindAll

4.4 注册到Spring容器(自定义的SQL注入器 MySqlInjector)

4.5 测试

输出的SQL:

至此,我们实现了全局扩展SQL注入器

5、自动填充功能

有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version 等。在MP中提供了这样的功能,可以实现自动填充

5.1 添加@TableField注解

为password添加自动填充功能,在新增数据时有效。

FieldFill提供了多种模式选择:

5.2 编写MyMetaObjectHandler

插入数据时填充:

// 先获取到password的值,再进行判断,如果为空,就进行填充,如果不为空,就不做处理

更新数据时填充:

5.3 测试

结果:(默认在插入时填充密码为123456

6、逻辑删除(标记隐藏展示)

开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除,所谓逻辑删除就是将数据标记为删除,而并非真正的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除

MP就提供了这样的功能,方便我们使用,接下来我们一起学习下:

6.1 修改表结构

tb_user表增加deleted字段,用于表示数据是否被删除,1代表删除,0代表未删除:

同时,也修改User实体,增加deleted属性并且添加@TableLogic注解:

6.2 配置

application.properties:

6.3 测试

执行的SQL:

数据库表:

测试查询:

执行的SQL:

已经查询不出来了,可见,已经实现了逻辑删除。

7、通用枚举

解决了繁琐的配置,让 mybatis 优雅的使用枚举属性

7.1 修改表结构

7.2 定义枚举

7.3 配置

7.4 修改实体

7.5 测试

测试插入数据:

SQL:

数据库表:

查询:(这里的插件可以将枚举和1,2进行转化)

结果:

从测试可以看出,可以很方便的使用枚举了

查询条件时也是有效的:

SQL:

8、代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率

8.1 创建工程

创建工程:

导入pom.xml:

8.2 代码

直接复制模板即可:(以下仅展示部分代码内容)

8.3 测试

代码已生成:

实体对象:

9、MyBatisX 快速开发插件

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。

安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装

功能:

  • Java 与 XML 调回跳转
  • Mapper 方法自动生成 XML

测试用例:

结果:

http://www.hkea.cn/news/796561/

相关文章:

  • 好的摄影网站推荐福州seo顾问
  • html做的好看的网站如何宣传推广产品
  • 微信手机网站制作怎么引流客源最好的方法
  • 宿州建设网站公司前端seo搜索引擎优化
  • 做王境泽表情的网站百度seo关键词优化排名
  • 怎么选择无锡网站建设虚拟主机搭建网站
  • 做原油期货关注什么网站搜索引擎优化是做什么
  • 微信小程序怎么制作游戏安卓优化清理大师
  • 胶南做网站初学者做电商怎么入手
  • 网站为什么要维护佛山网络营销推广
  • 国企网站建设报告怎么建造自己的网站
  • 免费做司考真题的网站余姚网站如何进行优化
  • 如何网站开发1688网站
  • 丽水专业网站建设价格青岛网站优化
  • 网站开发专业培训学校百度推广登录官网入口
  • 贵阳做网站公司网站热度查询
  • 做课件最好的素材网站考拉seo
  • 网站建设玖首选金手指seo网站优化收藏
  • 台州卓远做网站好不好广州seo教程
  • dz网站数据备份bt磁力猪
  • github 可以做网站吗360seo
  • 杭州 企业门户网站建设爱链
  • dj那个网站做的好长沙公司网络营销推广
  • 设计师培训招生视频黑帽seo联系方式
  • 做网上贸易哪个网站好西宁网站seo
  • 电子烟网站建设杯子软文营销300字
  • 广州企业网站制作怎么做营销推广
  • 网站建设服务器在香港郑州网站建设专业乐云seo
  • 河北建设工程交易信息网海口关键词优化报价
  • 全国网站建设公司有多少家微信朋友圈广告投放收费标准