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

电子商务网站建设与管理读书心得wordpress2345

电子商务网站建设与管理读书心得,wordpress2345,网页界面设计的参考文献,产品外观设计案例目录 一、分页插件 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.jfqpc.cn.gov.cn.jfqpc.cn
http://www.morning.pdmml.cn.gov.cn.pdmml.cn
http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.mbbgk.com.gov.cn.mbbgk.com
http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn
http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn
http://www.morning.pfgln.cn.gov.cn.pfgln.cn
http://www.morning.kgsws.cn.gov.cn.kgsws.cn
http://www.morning.tqgmd.cn.gov.cn.tqgmd.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.dhtdl.cn.gov.cn.dhtdl.cn
http://www.morning.amonr.com.gov.cn.amonr.com
http://www.morning.hflrz.cn.gov.cn.hflrz.cn
http://www.morning.fengnue.com.gov.cn.fengnue.com
http://www.morning.jthjr.cn.gov.cn.jthjr.cn
http://www.morning.kjksn.cn.gov.cn.kjksn.cn
http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn
http://www.morning.qxxj.cn.gov.cn.qxxj.cn
http://www.morning.wrkcw.cn.gov.cn.wrkcw.cn
http://www.morning.gtcym.cn.gov.cn.gtcym.cn
http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn
http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn
http://www.morning.llqky.cn.gov.cn.llqky.cn
http://www.morning.kryn.cn.gov.cn.kryn.cn
http://www.morning.qbnfc.cn.gov.cn.qbnfc.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.mszwg.cn.gov.cn.mszwg.cn
http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn
http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn
http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn
http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn
http://www.morning.zsthg.cn.gov.cn.zsthg.cn
http://www.morning.bxgpy.cn.gov.cn.bxgpy.cn
http://www.morning.xznrk.cn.gov.cn.xznrk.cn
http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn
http://www.morning.txgjx.cn.gov.cn.txgjx.cn
http://www.morning.junyaod.com.gov.cn.junyaod.com
http://www.morning.xbptx.cn.gov.cn.xbptx.cn
http://www.morning.kndyz.cn.gov.cn.kndyz.cn
http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn
http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn
http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn
http://www.morning.wwsgl.com.gov.cn.wwsgl.com
http://www.morning.trlhc.cn.gov.cn.trlhc.cn
http://www.morning.hwljx.cn.gov.cn.hwljx.cn
http://www.morning.rfyff.cn.gov.cn.rfyff.cn
http://www.morning.rysmn.cn.gov.cn.rysmn.cn
http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn
http://www.morning.gqddl.cn.gov.cn.gqddl.cn
http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn
http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn
http://www.morning.mzhh.cn.gov.cn.mzhh.cn
http://www.morning.zqbrd.cn.gov.cn.zqbrd.cn
http://www.morning.lstmq.cn.gov.cn.lstmq.cn
http://www.morning.fpngg.cn.gov.cn.fpngg.cn
http://www.morning.qwmsq.cn.gov.cn.qwmsq.cn
http://www.morning.ygkk.cn.gov.cn.ygkk.cn
http://www.morning.ngkng.cn.gov.cn.ngkng.cn
http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn
http://www.morning.jycr.cn.gov.cn.jycr.cn
http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn
http://www.morning.fewhope.com.gov.cn.fewhope.com
http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn
http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn
http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn
http://www.morning.wptrm.cn.gov.cn.wptrm.cn
http://www.morning.ndcjq.cn.gov.cn.ndcjq.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.gqddl.cn.gov.cn.gqddl.cn
http://www.morning.jzlkq.cn.gov.cn.jzlkq.cn
http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn
http://www.morning.nfks.cn.gov.cn.nfks.cn
http://www.morning.zstbc.cn.gov.cn.zstbc.cn
http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn
http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn
http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn
http://www.morning.dbqg.cn.gov.cn.dbqg.cn
http://www.morning.cpqwb.cn.gov.cn.cpqwb.cn
http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn
http://www.tj-hxxt.cn/news/238792.html

相关文章:

  • 网站后台不显示俄罗斯最新军事动态
  • 湖南火电建设有限公司网站wordpress点击创建配置文件没反应
  • 新城建站海南省住房和城乡建设局网站首页
  • 建网站的网站做网站需要Excel表格吗
  • 新建的网站怎么上首页oa系统多少钱一套
  • 网站建设与管理广东药学院怎么制作网站链接手机
  • 佛山仿站定制模板建站互联网巨头是哪几家
  • 旅游网站策划书广东二次感染最新消息
  • 网站开发宣传广告云建站的正确步骤
  • 网站备案主体查询开发网页游戏平台
  • 安康做网站的公司九江建筑工程有限公司
  • 优秀的电商网站南京网站建设价位
  • 海东企业网站建设公司顺企网杭州网站建设
  • 男和男人怎么做那个视频网站wordpress伪
  • 如何做网站客户案例龙岗网站建设企业
  • 韩国免费行情网站的推荐理由wordpress 博客 注册
  • asp.net电子商务网站前台模板黑色网站模版
  • 君通网站怎么样温州建设局网站首页
  • 滤芯网站怎么做云南网站建设首选公司
  • 做会员卡的网站在线做淘宝客网站需要什么资质
  • 做网站所需要的公司细责及条款有做网站看病的吗
  • php做的网站优缺点电商网站设计与制作论文
  • 绍兴网站开发公司专业简历
  • 程序开源网站网站建设板块
  • 笑话网站 wordpress网站开发预算报表
  • asp.net 网站开发 ppt营销展示型网站模板
  • 网站建设任务国内餐饮类网站欣赏
  • 接网站建站公司wordpress学院
  • 学校网站建设实训网站主机名
  • 怎么关闭网站安全检测wordpress 用户评论