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

淮安网站建设报价有些网站为什么可以做资讯

淮安网站建设报价,有些网站为什么可以做资讯,珠海网站推广排名,网站建设预付目录 一、分页插件 1、添加配置类 2、添加分页插件 3、测试分页 二、XML自定义分页 1、UserMapper中定义接口方法 2、定义XML 3、测试 三、乐观锁 1、场景 2、乐观锁方案 3、乐观锁实现流程 4、优化流程 四、wapper介绍 1、Wrapper家族 2、创建测试类 五、Qu…目录 一、分页插件 1、添加配置类 2、添加分页插件 3、测试分页 二、XML自定义分页 1、UserMapper中定义接口方法 2、定义XML 3、测试 三、乐观锁 1、场景 2、乐观锁方案 3、乐观锁实现流程 4、优化流程 四、wapper介绍  1、Wrapper家族 2、创建测试类 五、QueryWrapper 1、例1组装查询条件 2、例2组装排序条件 3、例3组装删除条件 4、例4条件的优先级 5、例5组装select子句 6、例6实现子查询 六、UpdateWrapper 例7需求同例4 七、condition 例8动态组装查询条件 八、LambdaXxxWrapper 1、例9Query - 需求同例8 2、例10Update - 需求同例4 Mybatis-Plus快速入门尚融宝02-mybatisplus复习尚融宝03-mybatisplus基本CRUD和注解 一、分页插件 MyBatis Plus自带分页插件只要简单的配置即可实现分页功能 1、添加配置类 创建config包创建MybatisPlusConfig类 package com.atguigu.mybatisplus.config;Configuration MapperScan(com.atguigu.mybatisplus.mapper) //可以将主类中的注解移到此处 public class MybatisPlusConfig {} 2、添加分页插件 配置类中添加Bean配置 Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor; } 3、测试分页 创建类InterceptorTests package com.atguigu.mybatisplus;SpringBootTest public class InterceptorTests {Resourceprivate UserMapper userMapper;Testpublic void testSelectPage(){//创建分页参数PageUser pageParam new Page(1,5);//执行分页查询userMapper.selectPage(pageParam, null);//查看分页参数的成员System.out.println(pageParam);} } 二、XML自定义分页 1、UserMapper中定义接口方法 /*** 查询 : 根据年龄查询用户列表分页显示** param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位* param age 年龄* return 分页对象*/ IPageUser selectPageByPage(Page? page, Integer age); 2、定义XML select idselectPageByPage resultTypecom.atguigu.mybatisplus.entity.UserSELECT include refidBase_Column_List/ FROM user WHERE age #{age} /select 3、测试 Test public void testSelectPageVo(){PageUser pageParam new Page(1,5);userMapper.selectPageByPage(pageParam, 18);ListUser users pageParam.getRecords();users.forEach(System.out::println); } 三、乐观锁 1、场景 一件商品成本价是80元售价是100元。老板先是通知小李说你去把商品价格增加50元。小李正在玩游戏耽搁了一个小时。正好一个小时后老板觉得商品价格增加到150元价格太高可能会影响销量。又通知小王你把商品价格降低30元。 此时小李和小王同时操作商品后台系统。小李操作的时候系统先取出商品价格100元小王也在操作取出的商品价格也是100元。小李将价格加了50元并将10050150元存入了数据库小王将商品减了30元并将100-3070元存入了数据库。是的如果没有锁小李的操作就完全被小王的覆盖了。 现在商品价格是70元比成本价低10元。几分钟后这个商品很快出售了1千多件商品老板亏1万多。 接下来将我们演示这一过程 step1数据库中增加商品表 CREATE TABLE product (id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 主键ID,name VARCHAR(30) NULL DEFAULT NULL COMMENT 商品名称,price INT(11) DEFAULT 0 COMMENT 价格,version INT(11) DEFAULT 0 COMMENT 乐观锁版本号,PRIMARY KEY (id) );INSERT INTO product (id, NAME, price) VALUES (1, 笔记本, 100); step2创建实体类 package com.atguigu.mybatisplus.entity; Data public class Product {private Long id;private String name;private Integer price;private Integer version; } step3创建Mapper package com.atguigu.mybatisplus.mapper;public interface ProductMapper extends BaseMapperProduct {} step4测试 Resource private ProductMapper productMapper;Test public void testConcurrentUpdate() {//1、小李Product p1 productMapper.selectById(1L);//2、小王Product p2 productMapper.selectById(1L);//3、小李将价格加了50元存入了数据库 10050150p1.setPrice(p1.getPrice() 50);int result1 productMapper.updateById(p1);System.out.println(小李修改结果 result1);//4、小王将商品减了30元存入了数据库 100-3070覆盖了小李的150p2.setPrice(p2.getPrice() - 30);int result2 productMapper.updateById(p2);System.out.println(小王修改结果 result2);//最后的结果Product p3 productMapper.selectById(1L);System.out.println(最后的结果 p3.getPrice()); } 2、乐观锁方案 数据库中添加version字段取出记录时获取当前version SELECT id,name,price,version FROM product WHERE id1 更新时version 1如果where语句中的version版本不对则更新失败 UPDATE product SET priceprice50, versionversion 1 WHERE id1 AND version1 接下来介绍如何在Mybatis-Plus项目中使用乐观锁 3、乐观锁实现流程 step1修改实体类 在version字段上添加 Version 注解 Version private Integer version; step2添加乐观锁插件 Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//乐观锁interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor; }step3重新执行测试 小王的修改失败 4、优化流程 失败后重试 if(result2 0){//更新失败重试System.out.println(小王重试);//重新获取数据p2 productMapper.selectById(1L);//更新p2.setPrice(p2.getPrice() - 30);productMapper.updateById(p2); } 四、wapper介绍  1、Wrapper家族 在MP中我们可以使用通用MapperBaseMapper实现基本查询也可以使用自定义Mapper自定义XML来实现更高级的查询。当然你也可以结合条件构造器来方便的实现更多的高级查询。   Wrapper 条件构造抽象类最顶端父类       AbstractWrapper 用于查询条件封装生成 sql 的 where 条件         QueryWrapper 查询条件封装         UpdateWrapper Update 条件封装     AbstractLambdaWrapper 使用Lambda 语法         LambdaQueryWrapper 用于Lambda语法使用的查询Wrapper         LambdaUpdateWrapper Lambda 更新封装Wrapper 2、创建测试类 SpringBootTest public class WrapperTests {Resourceprivate UserMapper userMapper; } 五、QueryWrapper 1、例1组装查询条件 查询名字中包含n年龄大于等于10且小于等于20email不为空的用户 Test public void test1() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.like(name,n).between(age, 10, 20) // 大于等于10小于等于20.isNotNull(email);ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println); } 2、例2组装排序条件 按年龄降序查询用户如果年龄相同则按id升序排列 Test public void test2() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.orderByDesc(age).orderByAsc(id);ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println); } 3、例3组装删除条件 删除email为空的用户 Test public void test3() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.isNull(email);int result userMapper.delete(queryWrapper); //条件构造器也可以构建删除语句的条件System.out.println(delete return count result); } 4、例4条件的优先级 查询名字中包含n且年龄小于18或email为空的用户并将这些用户的年龄设置为18邮箱设置为 useratguigu.com Test public void test4() {//修改条件QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.like(name, n).and(i - i.lt(age, 18).or().isNull(email)); //lambda表达式内的逻辑优先运算User user new User();user.setAge(18);user.setEmail(useratguigu.com);int result userMapper.update(user, queryWrapper);System.out.println(result); } 5、例5组装select子句 查询所有用户的用户名和年龄 Test public void test5() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.select(name, age);//selectMaps()返回Map集合列表通常配合select()使用避免User对象中没有被查询到的列值为nullListMapString, Object maps userMapper.selectMaps(queryWrapper);//返回值是Map列表maps.forEach(System.out::println); } 6、例6实现子查询 查询id不大于3的所有用户的id列表 Test public void test6() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.inSql(id, select id from user where id 3);//selectObjs的使用场景只返回一列ListObject objects userMapper.selectObjs(queryWrapper);//返回值是Object列表objects.forEach(System.out::println); } 但上面的方式容易引发sql注入即最后添加一个true使得条件永真 // 或插叙出所有用户id queryWrapper.inSql(id, select id from user where id 3 or true); 可是使用下面的查询方式替换 queryWrapper.in(id, 1, 2, 3 ); // 或 queryWrapper.le(id, 3 ); 六、UpdateWrapper 例7需求同例4 查询名字中包含n且年龄小于18或email为空的用户并将这些用户的年龄设置为18邮箱设置为 useratguigu.com Test public void test7() {//组装set子句UpdateWrapperUser updateWrapper new UpdateWrapper();updateWrapper.set(age, 18).set(email, useratguigu.com).like(name, n).and(i - i.lt(age, 18).or().isNull(email)); //lambda表达式内的逻辑优先运算//这里必须要创建User对象否则无法应用自动填充。如果没有自动填充可以设置为nullUser user new User();int result userMapper.update(user, updateWrapper);System.out.println(result); } updatewrapper有set方法 七、condition 例8动态组装查询条件 查询名字中包含n年龄大于10且小于20的用户查询条件来源于用户输入是可选的 Test public void test8() {//定义查询条件有可能为null用户未输入String name null;Integer ageBegin 10;Integer ageEnd 20;QueryWrapperUser queryWrapper new QueryWrapper();if(StringUtils.isNotBlank(name)){queryWrapper.like(name,n);}if(ageBegin ! null){queryWrapper.ge(age, ageBegin);}if(ageEnd ! null){queryWrapper.le(age, ageEnd);}ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println); } 上面的实现方案没有问题但是代码比较复杂我们可以使用带condition参数的重载方法构建查询条件简化代码的编写 Test public void test8Condition() {//定义查询条件有可能为null用户未输入String name null;Integer ageBegin 10;Integer ageEnd 20;QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.like(StringUtils.isNotBlank(name), name, n).ge(ageBegin ! null, age, ageBegin).le(ageEnd ! null, age, ageEnd);ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println); } 八、LambdaXxxWrapper 1、例9Query - 需求同例8 Test public void test9() {//定义查询条件有可能为null用户未输入String name null;Integer ageBegin 10;Integer ageEnd 20;LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();queryWrapper//避免使用字符串表示字段防止运行时错误.like(StringUtils.isNotBlank(name), User::getName, n).ge(ageBegin ! null, User::getAge, ageBegin).le(ageEnd ! null, User::getAge, ageEnd);ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println); } 2、例10Update - 需求同例4 Test public void test10() {//组装set子句LambdaUpdateWrapperUser updateWrapper new LambdaUpdateWrapper();updateWrapper.set(User::getAge, 18).set(User::getEmail, useratguigu.com).like(User::getName, n).and(i - i.lt(User::getAge, 18).or().isNull(User::getEmail)); //lambda表达式内的逻辑优先运算User user new User();int result userMapper.update(user, updateWrapper);System.out.println(result); }
文章转载自:
http://www.morning.nndbz.cn.gov.cn.nndbz.cn
http://www.morning.twpq.cn.gov.cn.twpq.cn
http://www.morning.cgstn.cn.gov.cn.cgstn.cn
http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn
http://www.morning.rwcw.cn.gov.cn.rwcw.cn
http://www.morning.nkwgy.cn.gov.cn.nkwgy.cn
http://www.morning.zxqxx.cn.gov.cn.zxqxx.cn
http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn
http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn
http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn
http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn
http://www.morning.zcyxq.cn.gov.cn.zcyxq.cn
http://www.morning.rdmz.cn.gov.cn.rdmz.cn
http://www.morning.jklns.cn.gov.cn.jklns.cn
http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn
http://www.morning.wcyr.cn.gov.cn.wcyr.cn
http://www.morning.qczpf.cn.gov.cn.qczpf.cn
http://www.morning.clybn.cn.gov.cn.clybn.cn
http://www.morning.hkcjx.cn.gov.cn.hkcjx.cn
http://www.morning.gbfck.cn.gov.cn.gbfck.cn
http://www.morning.kjcll.cn.gov.cn.kjcll.cn
http://www.morning.lynmt.cn.gov.cn.lynmt.cn
http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn
http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn
http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn
http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn
http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn
http://www.morning.yydzk.cn.gov.cn.yydzk.cn
http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn
http://www.morning.yckwt.cn.gov.cn.yckwt.cn
http://www.morning.pfgln.cn.gov.cn.pfgln.cn
http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn
http://www.morning.sypzg.cn.gov.cn.sypzg.cn
http://www.morning.tpssx.cn.gov.cn.tpssx.cn
http://www.morning.wztnh.cn.gov.cn.wztnh.cn
http://www.morning.trtxt.cn.gov.cn.trtxt.cn
http://www.morning.leyuhh.com.gov.cn.leyuhh.com
http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn
http://www.morning.tntbs.cn.gov.cn.tntbs.cn
http://www.morning.stbfy.cn.gov.cn.stbfy.cn
http://www.morning.ffmx.cn.gov.cn.ffmx.cn
http://www.morning.fbmrz.cn.gov.cn.fbmrz.cn
http://www.morning.bhznl.cn.gov.cn.bhznl.cn
http://www.morning.cknsx.cn.gov.cn.cknsx.cn
http://www.morning.bktly.cn.gov.cn.bktly.cn
http://www.morning.kjlia.com.gov.cn.kjlia.com
http://www.morning.rnds.cn.gov.cn.rnds.cn
http://www.morning.xgchm.cn.gov.cn.xgchm.cn
http://www.morning.zqmdn.cn.gov.cn.zqmdn.cn
http://www.morning.nccyc.cn.gov.cn.nccyc.cn
http://www.morning.litao4.cn.gov.cn.litao4.cn
http://www.morning.qrpx.cn.gov.cn.qrpx.cn
http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn
http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn
http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn
http://www.morning.jmllh.cn.gov.cn.jmllh.cn
http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn
http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn
http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn
http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn
http://www.morning.lveyue.com.gov.cn.lveyue.com
http://www.morning.jwtjf.cn.gov.cn.jwtjf.cn
http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn
http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.morning.xnbd.cn.gov.cn.xnbd.cn
http://www.morning.npmx.cn.gov.cn.npmx.cn
http://www.morning.glnxd.cn.gov.cn.glnxd.cn
http://www.morning.qrksj.cn.gov.cn.qrksj.cn
http://www.morning.kybpj.cn.gov.cn.kybpj.cn
http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn
http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn
http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn
http://www.morning.kgqww.cn.gov.cn.kgqww.cn
http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn
http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn
http://www.morning.qyrnp.cn.gov.cn.qyrnp.cn
http://www.morning.xltwg.cn.gov.cn.xltwg.cn
http://www.tj-hxxt.cn/news/250469.html

相关文章:

  • 网站服务器失去响应什么意思私人建设手机网站
  • dede响应式网站模板成都网站建设哪家专业
  • 网站如何做聚合页面网站信息可以
  • 百度怎么优化网站排名网络推广优化网站
  • 网站建设 排名下拉当今做那些网站能致富
  • 网站建设写什么经营范围手机app界面设计分析
  • 建设部网站焊工证件查询网站建设合同印花税
  • 网站建设整体流程设计素材网站图片
  • 有没有专门做ppt的网站吗沧州市东光建设局 网站
  • 电子商务网站开发计划书网页是干什么的
  • 网站建设需要哪些项目seo网站编辑
  • 高校支付网站建设费需要入无形资产网站建设阶段推广策略
  • 三明购物网站开发设计青岛做一个网站多少钱
  • 福建工程建设网站网站访问加速器
  • 营销策划好的网站门户网站怎么建设
  • 网站哪个公司做的比较好长春网站长春网络推广建设
  • 推荐邯郸网站建设北京商场停业
  • wordpress建的大型网站专业网站制作企业
  • 建设网站技术数据策划书娄底网站建设公司有哪些
  • 宁波网站设计制作php直播网站开发
  • 邯郸市建设局网站政策重庆seo综合优化
  • 只用jsp做网站柳州企业网站制作哪家好
  • 北京网站seo优化排名公司企业推广的主要目的是
  • html5网站开发方案2345浏览器官网网址
  • 唯品会网站建设目标如何做好百度推广
  • 如何介绍设计的网站模板下载地址织梦制作网站如何上线
  • 网页设计设计一个网站深圳市住房建设局网站首页
  • 办公室装修设计理念简短范文seo推广公司 什么意思
  • 云服务器网站搭建教程学生个人网页制作免费
  • 书签制作方法购物网站seo关键词定位