网站空间可以转移吗,wordpress的极限,做一名网站编辑要具备什么资格,网站建设维护公司地址文章目录 自定义xml的sql脚本配置mybaits的全局配置文件mybatis-plus优化#xff0c;指定select数据库乐观锁mybatis-plus实现数据库乐观锁mybatis-plus实现逻辑删除 自定义xml的sql脚本
这里的使用和mybatis一样
编写mapper.xml文件
?xml version1.0 enc… 文章目录 自定义xml的sql脚本配置mybaits的全局配置文件mybatis-plus优化指定select数据库乐观锁mybatis-plus实现数据库乐观锁mybatis-plus实现逻辑删除 自定义xml的sql脚本
这里的使用和mybatis一样
编写mapper.xml文件
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
!--这个名称空间是Mapper接口的路径记得修改--
mapper namespacecom.youyou.mybatispluslombokswagger3.mapper.BannerMapperselect idlist resultTypecom.youyou.mybatispluslombokswagger3.bean.BannerDOselect * from banner/select
/mapper添加mapper接口中的抽象方法 ListBannerDO list();配置mapper.xml的默认位置
#默认配置路径。如果不配置系统有默认路径具体可查看源码多个路径可以逗号隔开
mybatis-plus.mapper-locationsclasspath*:/mapper/*Mapper.xml配置mybaits的全局配置文件
之前我们学习mybatis的时候我们配置过全局的配置文件如果我们也想在这里进行配置的话可以采用如下操作
在springboot的配置文件中添加如下配置 注意如果配置了mybatis-plus.config-location那么springboot中就不能配置configuration的配置。 因为configuration的这些配置其实就是全局配置文件的内容
#开启控制台打印sql
#mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl
#配置mybatis plus打印sql日志
#mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl
#配置最新全局配置文件
mybatis-plus.config-location classpath:mybatis-config.xml在指定的位置创建全局配置文件 这里面的配置就和之前学习的内容一样了。
mybatis-plus优化指定select
面试题select * 和 select 指定字段的区别 网络IO问题
select * 会查出所有的字段有些是不需要的当应用程序和服务器不在同一个局域网时字段过多会影响网络传输的性能索引问题
在 指定字段有索引的情况下mysql是可以不用读data直接使用index里面的值就返回结果的。但是一旦用了select *就会有其他列需要从磁盘中读取才会返回结果这样就造成了额外的性能开销MybatisPlus指定查询字段
bannerMapper.selectList(new QueryWrapperBannerDO().select(id,name));数据库乐观锁
什么是乐观锁
每次去拿数据的时候都认为别人不会修改更新的时候会判断是别人是否回去更新数据通过版本来判断如果数据被修改了就拒绝更新Java里面大量使用CAS, CAS这个是属于乐观锁性能较悲观锁有很大的提高
AtomicXXX 等原子类底层就是CAS实现一定程度比synchonized好因为后者是悲观锁小结悲观锁适合写操作多的场景乐观锁适合读操作多的场景乐观锁的吞吐量会比悲观锁多数据库的乐观锁
大多是基于数据版本 (Version)记录机制实现。何谓数据版本即为数据增加一个版本标识在基于数据库表的版本解决方案中一般是通过为数据库表增加一个 “version” 字段来 实现。 读取出数据时将此版本号一同读出之后更新时对此版本号加一。此时将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对如果提交的数据 版本号大于数据库表当前版本号则予以更新否则认为是过期数据mybatis-plus实现数据库乐观锁
Mybatis Plus里面自带一个插件可以帮我们轻松实现乐观锁使用 实体类增加version属性配置
Version
private Integer version;数据库增加version版本字段
CREATE TABLE banner (id int(11) unsigned NOT NULL AUTO_INCREMENT,img varchar(524) DEFAULT NULL COMMENT 图片,url varchar(524) DEFAULT NULL COMMENT 跳转地址,weight int(11) DEFAULT NULL COMMENT 权重,version int(11) DEFAULT 1 COMMENT 乐观锁版本号,deleted int(11) DEFAULT 0 COMMENT 0是未删除1是已经删除,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT16 DEFAULT CHARSETutf8mb4;增加乐观锁插件 Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();//分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;
}使用
BannerDO bannerDO new BannerDO();
bannerDO.setVersion(1);//旧版本号即查询出来的版本号
bannerDO.setId(1);
bannerDO.setUrl(xdclass.net);
bannerMapper.updateById(bannerDO); 注意 乐观锁数据类型支持int、integer、long、timestamp仅支持updateById和update方法
mybatis-plus实现逻辑删除
什么是逻辑删除
很多互联网公司在数据库设计规范中都加入了逻辑删除的强制规定运营人员可以分析和审查数据也方便将数据沉淀下来用于商业分析比如用户删除了订单只不过是更新了标记不会真正的物理删除。数据量过多也会采用数据仓库通过监听应用数据库的数据数据变化,进行迁移到数据仓库MybatisPlus如何使用 数据库增加deleted字段0是未删除1表示删除实体类增加属性配置TableLogic 或者 在配置文件增加指定
TableLogic(value 0,delval 1)
private Integer deleted;配置文件新增配置
#删除是1
mybatis-plus.global-config.db-config.logic-delete-value1
#未删除是0
mybatis-plus.global-config.db-config.logic-not-delete-value0
#如果java实体类没加注解TableLogic则可以配置这个推荐这里配置
mybatis-plus.global-config.db-config.logic-delete-fielddeleted验证 deleteById删除后就是结果就是更新 字段查询的时候会自动拼接上deleted0的检索条件