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

网站设计书广西网络公司有几家

网站设计书,广西网络公司有几家,电脑游戏网站建设,太原自助建站软件MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的#xff0c;不设置时自动填充 3. 乐观锁插件 注#xff1a;wrapper不能服用4. 性能分析… MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的不设置时自动填充 3. 乐观锁插件 注wrapper不能服用4. 性能分析插件4.1 PerformanceInterceptor 3.2.0版本被废除4.2 p6spy 使用 5. 多租户SQL解析器6. 动态表名SQL解析器7. SQL注入器 一、 MyBatis Plus 七大功能 0. 数据准备 数据库表 CREATE TABLE user (id bigint(20) NOT NULL COMMENT 主键 ,name varchar(30) DEFAULT NULL COMMENT 姓名,age int(11) DEFAULT NULL COMMENT 年龄,email varchar(50) DEFAULT NULL COMMENT 邮箱,manager_id bigint(20) DEFAULT NULL COMMENT 直属上级id,create_time datetime DEFAULT NULL COMMENT 创建时间,update_time datetime DEFAULT NULL COMMENT 修改时间,version int(11) DEFAULT 1 COMMENT 版本,deleted int(1) DEFAULT 0 COMMENT 逻辑删除标识(0未删除1已删除),PRIMARY KEY (id),KEY manager_fk (manager_id),CONSTRAINT manager_fk FOREIGN KEY (manager_id) REFERENCES user (id) ) ENGINEInnoDB DEFAULT CHARSETutf8; 实体类Data Accessors(chain true) TableName(user) public class User extends ModelUser implements Serializable {private static final long serialVersionUID 1L;/*** 主键ID*/TableId(value id,type IdType.AUTO)private Long id;/*** 姓名*/TableField(name)private String name;/*** 年龄*/TableField(age)private Integer age;/*** 邮箱*/TableField(email)private String email;TableField(manager_id)private Long manageId;/*** 出生时间*/TableField(create_time)private LocalDateTime createTime;TableField(update_time)private LocalDateTime updateTime;/*** 是否置顶*/TableField(version)private Integer version;/*** 字段排除*/TableLogicTableField(deleted)private Integer deleted; } xml配置 server:port: 8088 spring:# 配置数据源信息datasource:# 配置连接数据库信息#本地地址“127.0.0.1”#数据库名称“db2”url: jdbc:mysql://127.0.0.1:3306/db2?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLfalseserverTimezoneGMT%2B8allowPublicKeyRetrievaltrue#数据库账户username: root#数据库密码password: root mybatis-plus:global-config:db-config:#逻辑删除字段logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl1. 逻辑删除 逻辑删除语句int i userMapper.deleteById(2);System.out.println(i); 真实执行语句Preparing: UPDATE user SET deleted1 WHERE id? AND deleted0Parameters: 2(Integer)Updates: 1 实际未删除只修改删除字段的值 这时候如果执行查询语句则只会展示逻辑删除为0的字段记录ListUser list userMapper.selectList(null);list.forEach(System.out::println); 虽然库中有三条记录但是有两条删除字段为1则list中只展示一条TableField(value deleted,select false)private Integer deleted;selectfalse; 查询语句将不出现deleted字段2. 自动填充 自动填充 创建和 更新时间TableField(value create_time,fill FieldFill.INSERT)private LocalDateTime createTime;TableField(value update_time,fill FieldFill.UPDATE)private LocalDateTime updateTime; Component public class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {System.out.println(insertFill);setFieldValByName(createTime, LocalDateTime.now(),metaObject);}Overridepublic void updateFill(MetaObject metaObject) {setFieldValByName(updateTime, LocalDateTime.now(),metaObject);System.out.println(updateFill);} }2.1 优化1 自动填充 有的类没有更新和创建时间字段 Component public class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {boolean hasSetter metaObject.hasSetter(createTime);if (hasSetter){System.out.println(insertFill);setFieldValByName(createTime, LocalDateTime.now(),metaObject);}}Overridepublic void updateFill(MetaObject metaObject) {boolean hasSetter metaObject.hasSetter(updateTime);if (hasSetter){setFieldValByName(updateTime, LocalDateTime.now(),metaObject);System.out.println(updateFill);}} } 2.2 优化2 自己设置时间时填充自己设置的不设置时自动填充 Component public class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {Object createTime getFieldValByName(createTime, metaObject);if (ObjectUtils.isNull(createTime)){boolean hasSetter metaObject.hasSetter(createTime);if (hasSetter){System.out.println(insertFill);setFieldValByName(createTime, LocalDateTime.now(),metaObject);}}}Overridepublic void updateFill(MetaObject metaObject) {Object updateTime getFieldValByName(updateTime, metaObject);if (ObjectUtils.isNull(updateTime)){boolean hasSetter metaObject.hasSetter(updateTime);if (hasSetter){setFieldValByName(updateTime, LocalDateTime.now(),metaObject);System.out.println(updateFill);}}} } 3. 乐观锁插件 注wrapper不能服用 乐观锁和悲观锁是在并发编程中用来处理资源竞争和保证数据一致性的两种不同策略。它们各自适用于不同的使用场景 乐观锁 乐观锁的核心思想是假设并发访问的操作不会发生冲突因此在读取资源时不会进行加锁而是在更新资源时进行冲突检测。如果发现有其他线程已经对资源进行修改则放弃当前操作或尝试重新执行。 使用场景 并发写入操作较少的情况下冲突发生的概率较低。 数据库表中的数据很少被修改在持续时间较短的事务中进行读取操作。 适合处理乐观并发控制机制如版本号或时间戳等。 悲观锁 悲观锁的核心思想是假设并发访问的操作会发生冲突因此在访问资源之前会进行加锁操作确保在整个操作期间资源不被其他线程修改。 使用场景 并发写入操作较多的情况下冲突发生的概率较高。 数据库表中的数据经常被修改在持续时间较长的事务中进行读取操作。 适合使用数据库的行级锁、表级锁或者分布式锁等来实现。 Configuration public class MyBatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();//添加分页插件//参数new PaginationInnerInterceptor(DbType.MYSQL)是专门为mysql定制实现的内部的分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//添加乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;} } 实体类字段TableField(version)Versionprivate Integer version;测试int version2;User user new User();user.setId(1683667832465985538L);user.setEmail(lwxqq.com);user.setName(lwx);user.setVersion(version);int update userMapper.updateById(user);System.out.println(update);4. 性能分析插件 4.1 PerformanceInterceptor 3.2.0版本被废除 BeanProfile({dev,test}) // 指定环境public PerformanceInterceptor performanceInterceptor() {PerformanceInterceptor interceptor new PerformanceInterceptor();// sql美化打印interceptor.setFormat(true);// 设置SQL超时时间interceptor.setMaxTime(500);//格式化语句performanceInterceptor.setFormat(true);return interceptor;}4.2 p6spy 使用 dependencygroupIdp6spy/groupIdartifactIdp6spy/artifactIdversion3.8.7/version /dependency #3.2.1以上使用 modulelistcom.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory #3.2.1以下使用或者不配置 #modulelistcom.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory # 自定义日志打印 logMessageFormatcom.baomidou.mybatisplus.extension.p6spy.P6SpyLogger #日志输出到控制台 appendercom.baomidou.mybatisplus.extension.p6spy.StdoutLogger # 使用日志系统记录 sql #appendercom.p6spy.engine.spy.appender.Slf4JLogger # 设置 p6spy driver 代理 deregisterdriverstrue # 取消JDBC URL前缀 useprefixtrue # 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset. excludecategoriesinfo,debug,result,commit,resultset # 日期格式 dateformatyyyy-MM-dd HH:mm:ss # 实际驱动可多个 #driverlistorg.h2.Driver # 是否开启慢SQL记录 outagedetectiontrue # 慢SQL记录标准 2 秒 outagedetectioninterval2server:port: 8088 spring:# 配置数据源信息datasource:# 配置连接数据库信息#本地地址“127.0.0.1”#数据库名称“db2”driver-class-name: com.p6spy.engine.spy.P6SpyDriverurl: jdbc:p6spy:mysql://localhost:3306/db2?useSSLfalseuseUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/Shanghai#数据库账户username: root#数据库密码password: root mybatis-plus:global-config:db-config:#逻辑删除字段logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl5. 多租户SQL解析器 6. 动态表名SQL解析器 7. SQL注入器
http://www.pierceye.com/news/995809/

相关文章:

  • 淮北市建设安全监督站网站文员工作内容
  • 先做网站还是app海北网站建设
  • 网站中转页怎么做做网页需要什么
  • 台州城乡建设规划网站房产管理局官网入口
  • 徐州手机建站模板宁波公司招聘
  • 类似 wordpress 建站哪里有培训班
  • 广州建设六马路小学网站微营销软件免费下载
  • 广州网站推广解决方案网站建设标志头像图片
  • 网站建设 中企动力成都qq空间wordpress
  • 什么是定制网站php网站开发面试
  • 网站建设推广专家服务重庆万泰建设集团有限公司
  • 2017两学一做竞赛网站手游游戏推广平台
  • 贵州灵溪seo整站优化wordpress开发文档(chm)
  • iis7 网站权限设置亚马逊网站开发设计
  • 贵阳做网站哪家好复古网站设计
  • 网站跳转是什么意思58这样网站怎么做
  • 易语言网站批量注册怎么做百度模板网站模板
  • 海伦市网站山西大川建设有限公司网站
  • 快速搭建网站域名绑定设置网站优化是往新闻中心发新闻吗
  • 复刻手表网站公众号快速涨10000粉丝方法
  • 珠海网站系统建设项目制作网页的网站推荐
  • 做网站公司怎么选宁波外贸公司排行
  • 在因特网上建设网站可选择的方案网络营销实际上就是网上营销
  • 网站建设思路梳理wordpress 修改数据库表
  • 定制建站橱柜企业网站模板
  • 做网站js框架施工企业三金压降指的是哪三金
  • 现在建设一个网站需要什么技术网页设计素材推荐
  • 大寺网站建设公司虚拟机可以做多个网站
  • 网站更新文章承德信息网
  • 做平面图片的网站网络钟点工