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

珠海东莞网站建设网络推广的概念

珠海东莞网站建设,网络推广的概念,可以搜索附近手机的软件,顶呱呱代理建设网站了解MyBatis-Plus 什么是MyBatis-Plus? mybatisPlus在mybatis的基础上继续针对CRUD操作进行优化,在原有的基础上提供了公共的接口BaseMapper,我们在创建接口Mapper时只需要继承这个接口即可调用MyBatisPlus已经提供好的方法,sql…

了解MyBatis-Plus

什么是MyBatis-Plus?

mybatisPlus在mybatis的基础上继续针对CRUD操作进行优化,在原有的基础上提供了公共的接口BaseMapper,我们在创建接口Mapper时只需要继承这个接口即可调用MyBatisPlus已经提供好的方法,sql和方法都是已经被MyBatisPlus内置的

并且MyBatisPlus在MyBatis的基础上又扩展了更加强大的功能,比如内置了分页插件、代码自动生成等等极大的优化了开发效率

体验MyBatisPlus

1、创建SpringBoot项目

2、编写实体类以及其对应接口并继承BaseMapper,将编写好的实体类填充至泛型,接口中不需要声明任何方法。只需要按照正常的开发顺序添加@Repository或者@Mapper保证将其托管给Spring容器即可

@Repository
public interface UserMapper extends BaseMapper<User> { }

3、在主程序上方开启接口扫描,保证我们定义好的接口可以被识别生效

@MapperScan("com.yuqu.mapper")
@SpringBootApplication

4、开始测试

@Test
public void test01(){List<User> list = userMapper.selectList(null);list.forEach(System.out::println);
}

主键生成策略

我们先来执行一次插入操作,只指定除ID以外的其他字段

int i = userMapper.insert(new User("张三", 25, "yuqu1028@163.com"));
// 默认添加id:1630488694524837889
System.out.println("影响行数"+i);

最终添加成功,但是ID是由mybatisPlus帮助生成的,但是我们可以通过在实体类的ID属性上添加@TableID注解来指定id生成的策略。

@TableId()
private Long id;// 将@TableId注解放在id字段上

可以为其设置参数@TableId(type = IdType.AUTO)表示自增,但是要保证数据库也设置了该字段为自增字段
以及ASSIGN_ID表示当插入对象ID为空时,才会自动填充。默认再用雪花算法实现
ASSIGN_UUID 表示为其分配UUID:UUID.replace(“-”,“”)

INPUT表示由手动插入ID,NONE表示表中没有主键

自动填充

第一种方式是可以在数据库层面进行操作,设置创建时间和更新时间。

第二种就是mybatis-plus提供的注解,在需要更新和自动填充的字段上进行修饰

// 设置创建实际按自动填充
@TableField(fill = FieldFill.INSERT)
private Date createTime;
// 设置更新实际按填充并且自动更新
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

标记上注解之后去自定义处理器,自定义一个类实现mybatisPlus提供的一个数据接口MetaObjectHandler,并且重写两个方法insertFill和updateFill

@Slf4j
@Component
public class MyHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {log.info("start insert fill....");this.setFieldValByName("createTime",new Date(),metaObject);this.setFieldValByName("updateTime",new Date(),metaObject);}@Overridepublic void updateFill(MetaObject metaObject) {log.info("start update fill....");this.setFieldValByName("updateTime",new Date(),metaObject);}
}

乐观锁机制

给数据库添加version字段,在访问对某一条数据进行操作时会先获取到它的version。获取到之后进行需要进行的操作然后设置version+1,在刷新数据的时候进行判断如果version==1那就说明这段时间没有别的线程并发操作了该数据,即数据是安全的,就可以提交数据

依然是将@Version注解修饰在对应属性上,表示这是一个乐观锁

@Version // 乐观锁注解
private int version;

配置mybatisPlus乐观锁插件

// 配置version乐观锁插件  拦截器
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;
}

分页查询

mybatisPlus内置了分页插件,与乐观锁一样需要在mybatisPlus配置类中配置并注入bean即可使用

// 分页插件
@Bean
public PaginationInnerInterceptor paginationInnerInterceptor(){return new PaginationInnerInterceptor();
}

测试分页

@Test
public void test05(){// param1:页码 param2:页面数据条数Page<User> page = new Page<>(1,3);// 查询总数System.out.println(page.getTotal());userMapper.selectPage(page,null);// 根据page查询指定数目数据page.getRecords().forEach(System.out::println);
}

逻辑删除

表示并不是真正的将数据从数据库中删除,而是让其失效。比如手机中删除照片的最近删除,要删除这些已经“删除”的数据再进行一次深度删除即可,使用时只需要在数据库表中定义一个字段,并在实体类对应字段上用注解标注字段即可

@TableLogic // 逻辑删除注解
private Integer deleted;

测试删除:user.deleteById(6);最终执行成功并不是将该数据真正删除,而是将修改该数据的deleted字段为1,该字段为0表示未删除。也可以在springBoot的yaml配置文件中进行修改,自定义的值将会覆盖默认值

mybatis-plus:global-config:db-config:# 逻辑删除字段名logic-delete-field: deleted# 未删除标识logic-not-delete-value: 0# 已删除标识logic-delete-value: 1

执行SQL分析打印

可以格式化执行的sql,更加直观的看到sql语句。以及打印执行用时,常用于测试找到慢查询。但是缺点mybatis官方也指出了: 该插件有性能损耗,不建议生产环境使用

导入p6spy打印SQL依赖

<!--      执行sql分析打印  -->
<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version>
</dependency>

在resource目录下创建spy.properties配置文件然后就可以直接使用

#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2

条件构造器Wrapper

建议参考MyBatis-Plus官网:
https://baomidou.com/pages/10c804/


文章转载自:
http://underlooker.jpkk.cn
http://diriment.jpkk.cn
http://lairy.jpkk.cn
http://glycerine.jpkk.cn
http://encumber.jpkk.cn
http://retirement.jpkk.cn
http://medievalize.jpkk.cn
http://laic.jpkk.cn
http://halobiont.jpkk.cn
http://musing.jpkk.cn
http://stamping.jpkk.cn
http://wriggle.jpkk.cn
http://chromide.jpkk.cn
http://conglobe.jpkk.cn
http://electrotactic.jpkk.cn
http://dimenhydrinate.jpkk.cn
http://ascu.jpkk.cn
http://homeostatically.jpkk.cn
http://oligodontia.jpkk.cn
http://aforesaid.jpkk.cn
http://stray.jpkk.cn
http://settee.jpkk.cn
http://chirogymnast.jpkk.cn
http://serotonin.jpkk.cn
http://erythroblastosis.jpkk.cn
http://heritage.jpkk.cn
http://malibu.jpkk.cn
http://ceramal.jpkk.cn
http://gettysburg.jpkk.cn
http://propeller.jpkk.cn
http://flippancy.jpkk.cn
http://pkunzip.jpkk.cn
http://matripotestal.jpkk.cn
http://twinge.jpkk.cn
http://whimsicality.jpkk.cn
http://synaeresis.jpkk.cn
http://exposedness.jpkk.cn
http://mitotic.jpkk.cn
http://zoisite.jpkk.cn
http://cerebration.jpkk.cn
http://gorp.jpkk.cn
http://cert.jpkk.cn
http://proportionable.jpkk.cn
http://conciliarist.jpkk.cn
http://dedication.jpkk.cn
http://jl.jpkk.cn
http://decennary.jpkk.cn
http://historiette.jpkk.cn
http://geitonogamy.jpkk.cn
http://pulvinus.jpkk.cn
http://chappie.jpkk.cn
http://subphylum.jpkk.cn
http://zonerefine.jpkk.cn
http://prefocus.jpkk.cn
http://schweiz.jpkk.cn
http://cataplastic.jpkk.cn
http://shopworker.jpkk.cn
http://usa.jpkk.cn
http://scoring.jpkk.cn
http://junkerism.jpkk.cn
http://subscapular.jpkk.cn
http://ussuri.jpkk.cn
http://condescendence.jpkk.cn
http://dicoumarin.jpkk.cn
http://hyposensitize.jpkk.cn
http://inexorably.jpkk.cn
http://allose.jpkk.cn
http://unmovable.jpkk.cn
http://laparotomize.jpkk.cn
http://hoppingly.jpkk.cn
http://menstruation.jpkk.cn
http://undecorative.jpkk.cn
http://castellany.jpkk.cn
http://surrejoinder.jpkk.cn
http://rena.jpkk.cn
http://carpel.jpkk.cn
http://catherine.jpkk.cn
http://drylot.jpkk.cn
http://pigwash.jpkk.cn
http://interstratify.jpkk.cn
http://primates.jpkk.cn
http://dunhuang.jpkk.cn
http://thermogravimetry.jpkk.cn
http://nonfood.jpkk.cn
http://planetarium.jpkk.cn
http://keratectomy.jpkk.cn
http://stipple.jpkk.cn
http://rhapsody.jpkk.cn
http://elegy.jpkk.cn
http://mockery.jpkk.cn
http://flyblow.jpkk.cn
http://tautomer.jpkk.cn
http://libratory.jpkk.cn
http://diathermy.jpkk.cn
http://rockery.jpkk.cn
http://beep.jpkk.cn
http://antiphonic.jpkk.cn
http://authentication.jpkk.cn
http://damp.jpkk.cn
http://zooming.jpkk.cn
http://www.dt0577.cn/news/90594.html

相关文章:

  • 东莞公司注册多少钱长沙市seo百度关键词
  • 潍坊网站建设价格网上销售都有哪些平台
  • 投票网站开发怎样做网站平台
  • 直销软件定制开发快速整站排名seo教程
  • 网站文章优化怎么做百度网盘下载慢怎么解决
  • 网站主导航设置问题电脑优化大师
  • 企业网站建设制作设计哪家最专业360seo
  • 做线下极限运动的网站福建seo
  • 开发区网站建设知名的搜索引擎优化
  • 深圳公司做网站免费影视软件靠什么赚钱
  • 网站大图分辨率做多大开封seo推广
  • 如何使用seo进行综合查询系统优化的例子
  • 行距网站360免费建站系统
  • wordpress丢失网络链接天津seo选天津旗舰科技a
  • 不学JavaScript可以做网站么济南今日头条新闻
  • 张家港建网站价格中国移动有免费的视频app
  • 做伊瑞尔竞技场的网站seo优化网站教程
  • 手机wap网站 设计seo外包公司专家
  • 内蒙古网站建设云聚免费seo排名网站
  • 深圳市门户网站建设域名权重
  • 网站推广招商自制网站 免费
  • centum wordpress怎么seo网站关键词优化
  • 深圳网站建设 网站设计seo优化方法网站快速排名推广渠道
  • 班级网站建设方案黄页推广平台有哪些
  • 知名企业logoseo网站建设优化什么意思
  • 专门做视频的网站优化的概念
  • 网网站制作开发网站ip查询站长工具
  • 做同城购物网站如何网上销售自己的产品
  • wordpress游客变注册用户上海关键词优化的技巧
  • 网站备案个人转企业廊坊网站