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

做网站的模板软件项目开发的阶段和任务

做网站的模板,软件项目开发的阶段和任务,漯河市城市建设投资公司网站,网站悬浮窗代码目录 一、基本使用 1.1 插入数据 1.2 删除操作 1.3 更新操作 二、条件构造器Wrapper 2.1 常用AbstractWrapper方法 2.1.1 示例一 2.2.2 示例二 2.2.3 示例三 2.2 常用QueryWrapper方法 2.2.1 示例一 2.2.2 示例二 2.2.3 示例三#xff08;常用#xff09; 2.3 常…目录 一、基本使用 1.1 插入数据 1.2 删除操作 1.3 更新操作 二、条件构造器Wrapper 2.1 常用AbstractWrapper方法 2.1.1 示例一 2.2.2 示例二 2.2.3 示例三 2.2 常用QueryWrapper方法 2.2.1 示例一 2.2.2 示例二  2.2.3 示例三常用 2.3 常用UpdateWrapper方法 2.3.1 示例一 三、 Lambda条件构造器 3.1 示例一 四、实现自定义SQL 4.1 准备工作 4.2 Mybatis方法 一、基本使用 下列涉及的User表如下所示 1.1 插入数据 我们可以使用insert方法来实现数据的插入。 示例 Testpublic void testInsert(){User user new User();user.setUserName(fff33);user.setPassword(77888);int r userMapper.insert(user);System.out.println(r);} 1.2 删除操作 我们可以使用deleteXXX方法来实现数据的删除。 示例 Testpublic void testDelete(){ListInteger ids new ArrayList();ids.add(5);ids.add(6);ids.add(7);int i userMapper.deleteBatchIds(ids);System.out.println(i);}Testpublic void testDeleteById(){int i userMapper.deleteById(8);System.out.println(i);}Testpublic void testDeleteByMap(){MapString, Object map new HashMap();map.put(name,提姆);map.put(age,22);int i userMapper.deleteByMap(map);System.out.println(i);}这里的deleteByMap实际执行的操作如下 1.3 更新操作 我们可以使用updateXXX方法来实现数据的删除。 示例 Testpublic void testUpdate(){//把id为2的用户的年龄改为14User user new User();user.setId(2L);user.setAge(14);int i userMapper.updateById(user);System.out.println(i);} 二、条件构造器Wrapper 概述 我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器 Wrapper 。使用它可以让我们非常方便的构造条件。 其继承体系如下 在其子类 AbstractWrapper 中提供了很多用于构造Where条件的方法。  AbstractWrapper 的子类 QueryWrapper 则额外提供了用于针对Select语法的 select 方法。可以用来设置查询哪些列。 AbstractWrapper 的子类 updateWrapper 则额外提供了用于针对Set语法的set方法。可以用来设置对哪些列进行更新。 2.1 常用AbstractWrapper方法 eqequals等于 gtgreater than 大于 gegreater than or equals大于等于≥ ltless than小于 leless than or equals小于等于≤ between相当于SQL中的BETWEEN like模 糊匹配。like(name,黄)相当于SQL的name like %黄% likeRight模糊匹配右半边。 likeRight(name,黄)相当于SQL的name like 黄% likeLeft模糊匹配左半边。 likeLeft(name,黄)相当于SQL的name like %黄 andSQL连接符AND orSQL连接符OR in: in(“age,{1,2,3})相当于 age in(1,2,3) groupBy: groupBy(id,name)相当于 group by id,name orderByAsc :orderByAsc(id,name)相当于 order by id ASC,name ASC orderByDesc :orderByDesc (id,name)相当于 order by id DESC,name DESC 2.1.1 示例一 SQL语句如下 SELECT id,user_name,PASSWORD,NAME,age,address FROM USER WHERE age 18 AND address 狐山 如果用Wrapper写法如下  Testpublic void testWrapper01(){QueryWrapperUser wrapper new QueryWrapper();wrapper.gt(age,18);wrapper.eq(address,狐山);ListUser users userMapper.selectList(wrapper);System.out.println(users);} 我们可以通过调试来验证这一观点调用wrapper的getCustomSqlSegment方法  2.2.2 示例二 SQL语句如下 SELECT id,user_name,PASSWORD,NAME,age,address FROM USER WHERE id IN(1,2,3) AND age BETWEEN 12 AND 29 AND address LIKE %山% 如果用Wrapper写法如下 Testpublic void testWrapper02(){QueryWrapperUser wrapper new QueryWrapper();wrapper.in(id,1,2,3);wrapper.between(age,12,29);wrapper.like(address,山);ListUser users userMapper.selectList(wrapper);System.out.println(users);}2.2.3 示例三 SQL语句如下 SELECT id,user_name,PASSWORD,NAME,age,address FROM USER WHERE id IN(1,2,3) AND age 10 ORDER BY age DESC 如果用Wrapper写法如下 Testpublic void testWrapper03(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.in(id,1,2,3);queryWrapper.gt(age,10);queryWrapper.orderByDesc(age);ListUser users userMapper.selectList(queryWrapper);System.out.println(users);}2.2 常用QueryWrapper方法 QueryWrapper的 select 方法可以设置要查询的列。 2.2.1 示例一 select(String... sqlSelect) 方法的测试为要查询的列名 SQL语句如下 SELECT id,user_name FROM USER MP写法如下 Testpublic void testSelect01(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.select(id,user_name);ListUser users userMapper.selectList(queryWrapper);System.out.println(users);} 2.2.2 示例二  select(Class entityClass, Predicate predicate 方法的第一个参数为实体类的字节码对象第二个参数为Predicate类型即函数式接口可以使用lambda的写法过滤要查询的字段 (主键除外) 。 SELECT id,user_name FROM USER MP写法如下 Testpublic void testSelect02(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.select(User.class, new PredicateTableFieldInfo() {Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return user_name.equals(tableFieldInfo.getColumn());}});ListUser users userMapper.selectList(queryWrapper);System.out.println(users);} 分析  第一次循环id是默认有的所以不参与 第二次循环 这个方法内部其实就是遍历数据库中相对应的User表tableFieldInfo的column属性会通过循环的方式拿到每个表的属性然后进行匹配如果匹配结果为true就返回这个属性所对应的结果。   2.2.3 示例三常用 select(Predicate predicate 方法第一个参数为Predicate类型可以使用lambda的写法过滤要查询的字段 (主键除外) 。 SQL语句如下 SELECT id,user_name,PASSWORD,NAME,age FROM USER 就是不想查询address这列其他列都查询了。 MP写法如下 Testpublic void testSelect03(){QueryWrapperUser queryWrapper new QueryWrapper(new User());queryWrapper.select(new PredicateTableFieldInfo() {Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return !address.equals(tableFieldInfo.getColumn());}});ListUser users userMapper.selectList(queryWrapper);System.out.println(users);}分析  这是由于这个select方法需要传递entity对象没有传递无法调用。 2.3 常用UpdateWrapper方法 我们前面在使用update方法时需要创建一个实体类对象传入用来指定要更新的列及对应的值。但是如 果需要更新的列比较少时创建这么一个对象显的有点麻烦和复杂。 我们可以使用UpdateWrapper的set方法来设置要更新的列及其值。同时这种方式也可以使用Wrapper 去指定更复杂的更新条件。 2.3.1 示例一 SQL语句如下 UPDATE USER SET age 99 where id 1 我们想把id大于1的用户的年龄修改为99则可以使用如下写法 Testpublic void testUpdateWrapper(){UpdateWrapperUser updateWrapper new UpdateWrapper();updateWrapper.gt(id,1);updateWrapper.set(age,99);userMapper.update(null,updateWrapper);} 三、 Lambda条件构造器 我们前面在使用条件构造器时列名都是用字符串的形式去指定。这种方式无法在编译期确定列名的合法 性。 所以MP提供了一个Lambda条件构造器可以让我们直接以实体类的方法引用的形式来指定列名。这样就 可以弥补上述缺陷。  3.1 示例一 要执行的查询对应的SQL如下 SELECT id,user_name,PASSWORD,NAME,age,address FROM USER WHERE age 18 AND address 狐山 如果使用之前的条件构造器写法如下 Testpublic void testLambdaWrapper(){QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.gt(age,18);queryWrapper.eq(address,狐山);ListUser users userMapper.selectList(queryWrapper);} 如果使用Lambda条件构造器写法如下 Testpublic void testLambdaWrapper2(){LambdaQueryWrapperUser queryWrapper new LambdaQueryWrapper();queryWrapper.gt(User::getAge,18);queryWrapper.eq(User::getAddress,狐山);ListUser users userMapper.selectList(queryWrapper);} 四、实现自定义SQL 4.1 准备工作 SQL文件 CREATE TABLE orders (id bigint(20) NOT NULL AUTO_INCREMENT,price int(11) DEFAULT NULL COMMENT 价格,remark varchar(100) DEFAULT NULL COMMENT 备注,user_id int(11) DEFAULT NULL COMMENT 用户id,update_time timestamp NULL DEFAULT NULL COMMENT 更新时间,create_time timestamp NULL DEFAULT NULL COMMENT 创建时间,version int(11) DEFAULT 1 COMMENT 版本,del_flag int(1) DEFAULT 0 COMMENT 逻辑删除标识,0-未删除,1-已删除,create_by varchar(100) DEFAULT NULL COMMENT 创建人,update_by varchar(100) DEFAULT NULL COMMENT 更新人,PRIMARY KEY (id)) ENGINEInnoDB AUTO_INCREMENT6 DEFAULT CHARSETutf8;INSERT INTO orders(id,price,remark,user_id,update_time,create_time,version,del_flag,create_by,update_by) VALUES (1,2000,无,2,2021-08-24 21:02:43,2021-08-24 21:02:46,1,0,NULL,NULL),(2,3000,无,3,2021-08-24 21:03:32,2021-08-24 21:03:35,1,0,NULL,NULL),(3,4000,无,2,2021-08-24 21:03:39,2021-08-24 21:03:41,1,0,NULL,NULL);创建实体类 package com.fox.mp.domain;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.time.LocalDateTime;Data NoArgsConstructor AllArgsConstructor public class Orders {private Long id;/*** 价格*/private Integer price;/*** 备注*/private String remark;/*** 用户id*/private Integer userId;/*** 更新时间*/private LocalDateTime updateTime;/*** 创建时间*/private LocalDateTime createTime;/*** 版本*/private Integer version;/*** 逻辑删除标识,0-未删除,1-已删除*/private Integer delFlag;}4.2 Mybatis方法 定义方法 public interface UserMapper extends BaseMapperUser {User findMyUser(Long id); } 在Mapper接口中定义方法,这里没用Mapper注解的原因是因为在启动类上设置了扫描组件  创建XML文件 先在yml文件中配置xml文件的存放目录 mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml 创建对应的xml映射文件这里我们是使用MybatisX这个插件快速生成对应的xml文件 在xml文件中书写对应的SQL语句 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.fox.mp.mapper.UserMapperselect idfindMyUser resultTypecom.fox.mp.domain.Userselect * from tb_user where id #{id}/select /mapper
http://www.dnsts.com.cn/news/8000.html

相关文章:

  • 一般做外单的有哪些网站手机域名免费注册
  • 东莞网站建设-拥有多年专业广州做网站的
  • 南通网站建设 南大街抖音引流推广怎么做
  • 东莞网站建设少儿托管wordpress图片管理
  • 怎么找一家公司的网站网页设计的首页版式
  • 网站制作算什么费用找推网
  • 国建设网站西安行业网站制作
  • 网站后台设置关键词在哪设杭州公司做网站
  • 一级a做爰片免费网站下载设计公司装修效果图
  • 做营销网站建设价格wordpress+主题+引入js
  • 买网站不给我备案广州网站站建设培训
  • 邯郸网站建设兼职工业企业网站建设费
  • 做打牌的网站怎么办ps如何做psd模板下载网站
  • 《网站建设与维护》讲义简约大气展厅效果图
  • 正能量软件不良网站直播wordpress 跳转特效
  • 欢迎访问陕西省交通建设集团公司网站家具网站asp
  • 兰甘肃网站建设clouder认证考试网站建设
  • 一个新的网站怎么做优化一家专业做导购的网站
  • php 电子商务网站建设做网站美工工资多少
  • 佛山专业网站设计公司wordpress做简单的商城
  • php网站模块修改绍兴网站专业制作
  • 北京网站手机站建设公司电话宁波建设集团几个分公司
  • 分析竞争对手网站建设摩托车官网中国
  • 360建设网站免费做黑彩票的网站赚钱吗
  • 福田网站建设公司乐云seo评价一个网站设计的好坏
  • 成都建立网站的公司专业做网站的顺德公司
  • 网站维护预算海口网格员
  • 云服务器上建网站网站建设 英语翻译
  • 网站可以做库存吗业务代刷平台网站怎么做
  • 商丘做网站汉狮网络linux wordpress安装