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

遵义网站建设网站无锡网站建设和

遵义网站建设网站,无锡网站建设和,学生做网站教程,公司网站建设前期情况说明在上一篇的#xff1a;Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据#xff0c;本篇介绍 Mybatis 一个强大的特性#xff1a;动态SQL。 动态 SQL 解决什么问题#xff1f; 那当我们要执行的业务逻辑有… 在上一篇的Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据本篇介绍 Mybatis 一个强大的特性动态SQL。 动态 SQL 解决什么问题 那当我们要执行的业务逻辑有很多比如给成绩表中插入一行数据对应学生的 “性别” 字段是非必须参数时使用动态SQL就不用写两种插入语句传与不传性别 另外当执行查询逻辑时条件中的参数个数也是不确定的。 以上类似传入参数不确定的情况都可以使用动态SQL来解决。 1. if 标签 if标签可以用来判断参数是否符合预期值从而决定 SQL 语句的拼接 下面假设要给 student 表插入一行数据学生的 sex 字段对应的实体类中 sex 属性值为null借助if标签判断是否要在插入时插入 sex Maper 接口  Mapper public interface StudentMapper {// 新增学生信息int addStu(Student student); } 插入语句 mapper namespacecom.example.demo.mapper.StudentMapperinsert idaddStuinsert into student (uid, nameif testsex ! null and sex ! ,sex/if,score) values (#{uid}, #{name}if testsex ! null and sex ! ,#{sex}/if,#{score})/insert /mapper 测试方法 SpringBootTest class StudentMapperTest {Autowiredprivate StudentMapper studentMapper;TransactionalTestvoid addStu() {Student student new Student();student.setUid(1);student.setName(张三);student.setScore(98);// 传入的实体对象中不包含 sexint result studentMapper.addStu(student);System.out.println(插入成功 result);} } 使用时要注意区分属性和字段 test 里要判断的是“属性” —— 来自实体类对象 其他的是字段 —— 和数据库对应 2. trim 标签 trim标签还会结合if标签一起使用它有字面意思“修剪”的含义。 当SQL语句中有很多个非必传参数时一旦只传其中个别参数就会导致残留逗号或括号等情况导致SQL语句出现错误trim 标签就会根据实际情况去掉残留不必要的内容。 trim标签的四个参数         可根据场景添加 prefix表示整个语句块以prefix的值作为前缀 suffix表示整个语句块以suffix的值作为后缀 prefixOverrides表示整个语句块要去除掉的前缀 suffixOverrides表示整个语句块要去除掉的后缀 下面演示插入一条学生信息但参数只传学生名就会导致字段后面多出一个逗号同时如果不穿参数又会多出一对括号借助 trim 来修改 Mapper 接口  Mapper public interface StudentMapper {// 只插入学生姓名int addStuOnlyName(Student student); } SQL 语句 insert idaddStuOnlyNameinsert into studenttrim prefix( suffix) suffixOverrides,if testuid ! null and uid ! uid,/ifif testname ! null and name ! name,/ifif testsex ! null and sex ! sex,/ifif testscore ! null and score ! score/if/trimvaluestrim prefix( suffix) suffixOverrides,if testuid ! null and uid ! #{uid},/ifif testname ! null and name ! #{name},/ifif testsex ! null and sex ! #{sex},/ifif testscore ! null and score ! #{score}/if/trim/insert 单元测试 Testvoid addStuOnlyName() {Student student new Student();student.setName(李四);int result studentMapper.addStuOnlyName(student);System.out.println(插入成功 result);} 3. where 标签 直接借助示例演示根据学生 uid 或 学生名 来查询一条学生信息这里的两个查询条件都是非必传的。 ① 如果查询时只给了其中一个条件那么 where 后面连接时的 and 就会被多出来 ② 如果两个条件都不穿那么 where 就会被多出来 针对第一种情况可以使用trim 标签去后缀的方式去掉 andand 放在参数的后面; 针对第二种情况解决办法很多种 where 后添加 11and 放在每个条件参数前面使用trim去前缀去掉and         但这种写法很冗余不是好办法 where 作为trim标签的前缀只有trim里有代码才会自动加上前缀 where再按照去后缀的方式去掉 and 使用 where 标签专门解决这种场景     where 里面有内容就会自动生成 where没有就不生成。 ​​​​​​​​​​​​​​   同时如果有多出来的 and 它也会按照去前缀的方式去掉         4. set 标签 set 标签用于修改场景set标签也是包着所有参数如果没有内容就不加 set但没有set语句对于 mysql 是错误的所以至少要传一个参数 set 会自动去掉多余的逗号 update idupdateStuupdate studentsetif testuid ! null and uid 0uid #{uid},/ifif testname ! null and name ! name #{name},/ifif testsex ! null and sex ! sex #{sex},/ifif testscore ! null and score 0score #{score}/if/setwhere uid #{uid}/update 5. foreach 标签 foreach 标签用于遍历传入的集合它有五个可选项 collection绑定方法参数中的集合如 ListSetMap或数组对象item遍历时的每⼀个对象open语句块开头的字符串close语句块结束的字符串separator每次遍历的对象之间间隔的字符串 // 根据 uid 批量删除int deleteByUids(ListInteger uidList); delete iddeleteByUidsdelete from studentwhere uid inforeach collectionuidList itemuid open( close) separator,#{uid}/foreach/delete
http://www.hkea.cn/news/14290852/

相关文章:

  • 模板网站搭建wordpress home.php
  • 做网站要会哪些技术电商网站大全
  • 网站建设糹金手指花总网站建设 重庆
  • 一个专门做视频配音的网站做网站作品是静态
  • 网站整体运营思路免费个人域名邮箱
  • 成都大丰网站建设例表网网站换一家做还用备案么
  • 做网站年入百万网站建设云主机云服务器
  • 小程序网站建设y021网站建设和维护工作
  • 东城网站开发公司品牌推广活动
  • 敦化网站开发又拍云wordpress插件
  • 胶州网站建设公司哪家好全国一级建造师网
  • 网站备案流程图成都企业如何建网站
  • 申请163邮箱注册关键词推广优化
  • 广州专业的免费建站百度网站分析工具
  • 陕西做网站的公司在哪品牌定位 品牌
  • 免费网站建设公司联系方式公司网页设计代码
  • 江苏省建设部官方网站建设项目立项网站
  • 娄底本地做寄生虫网站中国互联网站建设中心
  • 网站备案需要多久时间c 开发手机网站开发
  • 蚂蜂窝网站分析wordpress nginx安装
  • 那些网站可以注册域名网店服务平台
  • 广州货运网站建设广告传媒公司简介范文
  • 番禺区移动端网站制作有哪些网站可以做店面设计
  • 中国空间站进展建设银行陕西分行网站
  • jsp商务网站建设宁波市网站集约化建设通知
  • 中国建设银行钓鱼网站旅游景区网站建设
  • 网站个人中心模板用模板做的网站不好优化
  • 做网站不带优化的吗wordpress滑块教程
  • 网站如何在百度软文推广文案
  • 潍坊网站制作公司网站程序 不能创建文件夹