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

如何办好公司网站erp软件开发

如何办好公司网站,erp软件开发,小程序制作开发平台,国家开发银行生源地助学贷款系统目录 一、动态SQL 1.1 数据准备#xff1a; 1.2 if标签 1.3trim 标签 1.4where标签 1.5set标签 1.6 foreach标签 1.7include 标签 一、动态SQL 动态SQL是Mybatis的强⼤特性之⼀#xff0c;能够完成不同条件下不同…目录 一、动态SQL 1.1 数据准备 1.2 if标签 1.3trim 标签 1.4where标签 1.5set标签 1.6 foreach标签  1.7include  标签 一、动态SQL 动态SQL是Mybatis的强⼤特性之⼀能够完成不同条件下不同的sql拼接 在注册用户的时候可能会有这样⼀个问题如下图所示 修改个人信息时会有两种字段必填字段和非必填字段那如果在添加用户的时候有不确定的字段传入。这个时候就需要使用动态标签来判断了比如添加的时候性别gender为非必填字段具体实现如下: 1.1 数据准备 UserInfo类 Data NoArgsConstructor AllArgsConstructor public class UserInfo {private Integer id;private String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private Date createTime;private Date updateTime; }user_info表 -- 创建数据库 DROP DATABASE IF EXISTS mybatis_test; CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;-- 使⽤数据数据 USE mybatis_test;-- 创建表[⽤⼾表] DROP TABLE IF EXISTS user_info; CREATE TABLE user_info (id INT(11) NOT NULL AUTO_INCREMENT,username VARCHAR(127) NOT NULL,password VARCHAR(127) NOT NULL,age TINYINT(4) NOT NULL,gender TINYINT(4) DEFAULT 0 COMMENT 1男2⼥0默认,phone VARCHAR(15) DEFAULT NULL,delete_flag TINYINT(4) DEFAULT 0 COMMENT 0正常, 1删除,create_time DATETIME DEFAULT now(),update_time DATETIME DEFAULT now(),PRIMARY KEY (id) ) ENGINE INNODBDEFAULT CHARSET utf8mb4;-- 添加用户信息 INSERT INTO mybatis_test.user_info(username, password, age, gender, phone) VALUES (admin, admin, 18, 1, 18612340001); INSERT INTO mybatis_test.user_info(username, password, age, gender, phone) VALUES (zhangsan, zhangsan, 18, 1, 18612340002); INSERT INTO mybatis_test.user_info(username, password, age, gender, phone) VALUES (lisi, lisi, 18, 1, 18612340003); INSERT INTO mybatis_test.user_info(username, password, age, gender, phone) VALUES (wangwu, wangwu, 18, 1, 18612340004); article_info表 -- 创建⽂章表 DROP TABLE IF EXISTS article_info;CREATE TABLE articleinfo (id INT PRIMARY KEY auto_increment,title VARCHAR(100) NOT NULL,content TEXT NOT NULL,uid INT NOT NULL,delete_flag TINYINT(4) DEFAULT 0 COMMENT O - 正常1 - 删除,create_time DATETIME DEFAULT now(),update_time DATETIME DEFAULT now() ) DEFAULT charset utf8mb4;# 插入数据 INSERT INTO articleinfo ( title, content, uid ) VALUES ( Java, Java正⽂, 1 ); INSERT INTO article_info ( title, content, uid ) VALUES ( Python, Python正⽂, 2 ); INSERT INTO article_info ( title, content, uid ) VALUES ( MySQL, MySQL正⽂, 1); 在数据库中查询数据: user_info表 article_info表 1.2 if 标签 Mapper接口 Integer insertUserByCondition(UserInfo userInfo);Mapper.xml实现: ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org/ /DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.book.mapper.UserInfoMapperinsert idinsertUserByConditionINSERT INTO user_info (username,password,age,if testgender ! nullgender,/ifphone)VALUES (#{username},#{age},if testgender ! null#{gender},/if#{phone})/insert/mapper 测试 1、设置gender不为空 Testvoid insertUserByCondition() {log.info(添加用户信息);UserInfo userInfo new UserInfo();userInfo.setUsername(小王);userInfo.setPassword(123456);userInfo.setAge(18);userInfo.setGender(1);userInfo.setPhone(12345678901);userInfoMapper.insertUserByCondition(userInfo);log.info(添加成功);} 测试结果 2、设置gender为空 Testvoid insertUserByCondition() {log.info(添加用户信息);UserInfo userInfo new UserInfo();userInfo.setUsername(小王);userInfo.setPassword(123456);userInfo.setAge(18); // userInfo.setGender(1);userInfo.setPhone(12345678901);userInfoMapper.insertUserByCondition(userInfo);log.info(添加成功);} 测试结果 1.3 trim标签 之前的插入用户功能只是有一个gender字段可能是选填项如果有多个字段一般考虑使用标签结合标签对多个字段都采取动态生成的方式。 标签中有如下属性 prefix表示整个语句块以prefix的值作为前缀suffix表示整个语句块以suffix的值作为后缀prefixOverrides表示整个语句块要去除掉的前缀suffixOverrides表示整个语句块要去除掉的后缀 调整Mapper.xml的插入语句为 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org/ /DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.book.mapper.UserInfoMapperinsert idinsertUserByConditionINSERT INTO user_infotrim prefix( suffix) suffixOverrides,if testusername !nullusername,/ifif testpassword !nullpassword,/ifif testage ! nullage,/ifif testgender ! nullgender,/ifif testphone ! nullphone,/if/trimVALUEStrim prefix( suffix) suffixOverrides,if testusername !null#{username},/ifif testpassword !null#{password},/ifif testage ! null#{age},/ifif testgender ! null#{gender},/ifif testphone ! null#{phone}/if/trim/insert/mapper 测试  运行结果 在以上sql动态解析时会将第一个部分做如下处理 ·基于prefix配置开始部分加上 ·基于suffix配置结束部分加上 ·多个组织的语句都以结尾在最后拼接好的字符串还会以结尾会基于suffixOverrides配置去掉最后一个 1.4where标签 当我们查询不同电脑时系统会根据我们的筛选条件动态组装where条件 实现 接口定义: ListUserInfo queryByCondition(Integer age, Integer gender, Integer deleteFlag); Mapper.xml实现: ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org/ /DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.book.mapper.UserInfoMapperselect idqueryByCondition resultTypecom.example.book.model.UserInfoselect id, username, age, gender, phone, delete_flag, create_time,update_timefrom user_infowhereif testage ! nulland age #{age}/ifif testgender ! nulland gender #{gender}/ifif testdeleteFlag ! nulland delete_flag #{deleteFlag}/if/where/select/mapper 测试 测试结果 只会在子元素有内容的情况下才插入where子句而且会自动去除子句的开头的AND或 OR   1.5set标签 需求根据传入的用户对象属性来更新用户数据可以使用标签来指定动态内容. 接口定义根据传入的用户id属性修改其他不为null的属性 Mapper接口 Integer updateUserByCondition(UserInfo userInfo); Mapper.xml ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org/ /DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.book.mapper.UserInfoMapperupdate idupdateUserByConditionupdate user_infosetif testusername ! nullusername #{username},/ifif testage ! nullage #{age},/ifif testdeleteFlag ! nulldelete_flag #{deleteFlag},/if/setwhere id #{id}/update/mapper set动态的在SQL语句中插入set关键字并会删掉额外的逗号.用于update语句中 测试 Testvoid updateUserByCondition() {UserInfo userInfo new UserInfo();userInfo.setId(12);userInfo.setUsername(小张);userInfo.setAge(22);userInfo.setDeleteFlag(1);userInfoMapper.updateUserByCondition(userInfo);} 测试结果 1.6 foreach标签  对集合进行遍历时可以使用该标签。标签有如下属性 collection定方法参数中的集合如ListSetMap或数组对象item便历时的每一个对象open语句块开头的字符串close语句块结束的字符串separator每次遍历之间间隔的字符串 需求:根据多个userid,删除用户数据 Mapper接口: void deleteByIds(ListInteger ids); ArticleMapper.xml 中新增删除sql ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org/ /DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.book.mapper.ArticleInfoMapperdelete iddeleteByIdsdelete from article_infowhere id inforeach collectionids itemid separator, open( close)#{id}/foreach/delete/mapper 测试 Testvoid testDeleteByIds() {articleInfoMapper.deleteByIds(List.of(2,3));} 运行结果 1.7 include 标签 在xmI映射文件中配置的SQL有时可能会存在很多重复的片段此时就会存在很多余的代码 我们可以对重复的代码片段进行抽取将其通过sql标签封装到一个SQL片段然后再通过 include标签进行引用。 sql定义可重用的SQL片段 include通过属性refid指定包含的SQL片段  sql idallColumnid, username, age, gender, phone, delete_flag, create_time, update_time/sql 通过标签在原来抽取的地方进行引用。操作如下 select idqueryAllUser resultMapBaseMapselectinclude refidallColumn/includefrom user_info/selectselect idqueryById resultTypecom.example.demo.model.UserInfoselectinclude refidallColumn/includefrom userinfo where id #{id}/select
http://www.hkea.cn/news/14288968/

相关文章:

  • 专注河南网站建设成都网站建设哪个好
  • 班级网站设计素材免费做数据采集的网站
  • 我想注册网站怎么做定制高端网站建设报价
  • 杭州做营销型网站软件工程学校排名
  • 找人做网赌网站需要多少钱做网站和微信公众号需要多少钱
  • 少儿编程免费网站内蒙古建设厅官网站
  • 影视怎么建设网站wordpress 相邻文章
  • 鄠邑区建设局网站备案时填写 网站内容
  • 陇西网站建设 室内设计WordPress多站点默认设置
  • 苏州大型网站设计公司国外最牛设计网站
  • 昆山网站贺州做网站哪家公司
  • 云商网站建设上海app定制公司
  • 济南网站排名优化报价申请免费网站建设
  • 太原网站建设小程序虚拟主机怎么建网站
  • 可做百科资料参考的网站做公司 网站建设价格
  • 怎么成立自己的网站网站搭建流程图
  • 龙南网站建设设计一个网站的价格
  • 网站策划工资一般多少wordpress固定链接html
  • 重庆个人网络营销定制合肥网站优化
  • 云南省建设培训网站软件开发全流程
  • php mysql网站开发项目式教程百度收录查询代码
  • 网站制作高端网站建设原画培训班一般学费多少
  • 惠州网站建设开发团队网站维护合同模板
  • 国外网站打开速度慢的原因象山seo的优化
  • 怎么用手机做刷赞网站长沙广告网页设计人才招聘
  • 用网站开发客户发邮件菏泽网站建设公司
  • 维港豪宅项目网站建设巴南市政建设网站
  • 国内最好的网站建设公司有什么免费的wordpress
  • 网站移动适配怎么做企业工商信息查询系统
  • 销售网站开发意义黄冈网站建设费用