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

沧州建设银行招聘网站河南网站建设报价

沧州建设银行招聘网站,河南网站建设报价,做食品那些网站好,网站建设日程表图片前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 终于到了MyBatis最后一篇,这篇讲的是动态SQL的使用。 复杂情…

前言🍭

❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

终于到了MyBatis最后一篇,这篇讲的是动态SQL的使用。

复杂情况:动态SQL使用🍭

动态 SQL 是Mybatis的强大特性之⼀,能够完成不同条件下不同的 SQL 拼接。 可以参考官方文档:mybatis – MyBatis 3 | 动态 SQL

一、<if>标签🍭

在注册用户的时候,可能会有这样⼀个问题,有的信息是必填,有的是选填,那如果在添加⽤户的时候有不确定的字段传入,程序应该 如何实现呢?

这个时候就需要使用动态标签 <if> 来判断了,比如添加的时候性别 sex 为非必填字段,具体实现如下:

<insert id="insert">insert into user(username,password,<if test="sex != null">sex,</if>birthday,head) values (#{username},#{password},<if test="sex != null">#{sex},</if>#{birthday},#{head})</insert>

需要注意 test 中的 sex,是传入对象中的属性,不是数据库字段。而且if标签都是成对出现的

二、<trim>标签🍭

之前的插入用户功能,只是有⼀个 sex 字段可能是选填项,如果所有字段都是非必填项,就考虑使用<trim>标签结合<if>标签,对多个字段都采取动态生成的方式。

<trim>标签中有如下属性:

  • prefix:表示整个语句块,以prefix的值作为前缀
  • suffix:表示整个语句块,以suffix的值作为后缀
  • prefixOverrides:表示整个语句块要去除掉的前缀
  • suffixOverrides:表示整个语句块要去除掉的后缀

调整 UserMapper.xml 的插入语句为:

    <insert id="insert">insert into user<trim prefix="(" suffix=")" suffixOverrides=","><if test="username != null">username,</if><if test="password != null">password,</if><if test="sex != null">sex,</if><if test="birthday != null">birthday,</if><if test="head != null">head,</if><if test="createTime != null">create_time,</if></trim><trim prefix="values (" suffix=")" suffixOverrides=","><if test="username != null">#{username},</if><if test="password != null">#{password},</if><if test="sex != null">#{sex},</if><if test="birthday != null">#{birthday},</if><if test="head != null">#{head},</if><if test="createTime != null">#{createTime},</if></trim></insert>

在以上 sql 动态解析时,会将第⼀个 <trim> 部分做如下处理:

  • 基于 prefix 配置,前缀部分加上 (
  • 基于 suffix 配置,后缀部分加上 )
  • 多个 <if>组织的语句都以 , 结尾,在最后拼接好的字符串还会以 , 结尾,会基于 suffixO verrides 配置去掉最后⼀个 ,
  • 注意 <if test=“createTime != null”> 中的 createTime 是传入对象的属性,不是数据库字段

三、<where>标签🍭

传入的用户对象,根据属性做 where 条件查询,用户对象中属性不为 null 的,都为查询条件。如user.username 为 "a",则查询条件为 where username="a":

UserMapper:

List<User> selectByCondition(User user);

UserMapper.xml:

 <select id="selectByCondition" parameterType="com.example.ssmdemo1.entity.Userinfo" resultMap="baseMap">select id, username, password, nickname, sex, birthday, head, create_time from user<where><if test="username != null">and username=#{username}</if><if test="password != null">and password=#{password}</if><if test="sex != null">and sex=#{sex}</if><if test="birthday != null">and birthday=#{birthday}</if><if test="head != null">and head=#{head}</if><if test="createTime != null">and create_time=#{createTime}</if></where></select>
以上<where>标签也可以使用<trim prefix="where" prefixOverrides="and"> 替换,中间的if标签代码不需要变。

四、<set>标签🍭

根据传入的用户对象属性来更新用户数据,可以使用<set>标签来指定动态内容。

UserMapper 接口中修改用户方法:根据传入的用户 id 属性,修改其他不为 null 的属性:

int updateById(User user); 

UserMapper.xml 中添加更新用户 SQL:

<update id="updateById" parameterType="com.example.ssmdemo1.entity.Userinfo">update user<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password},</if><if test="sex != null">sex=#{sex},</if><if test="birthday != null">birthday=#{birthday},</if><if test="head != null">head=#{head},</if><if test="createTime != null">create_time=#{createTime},</if></set>where id=#{id}</update>

以上<set>标签也可以使用 <trim prefix="set" suffixOverrides=","> 替换。

五、<foreach>标签🍭

对集合进⾏遍历时可以使用该标签。<foreach>标签有如下属性:

  • collection:绑定方法参数中的集合,如 List,Set,Map或数组对象
  • item:遍历时的每⼀个对象
  • open:语句块开头的字符串
  • close:语句块结束的字符串
  • separator:每次遍历之间间隔的字符串

示例:根据多个文章 id 来删除文章数据。

ArticleMapper 中新增接口方法:

int deleteByIds(List<Integer> ids);

ArticleMapper.xml 中新增删除 SQL:

<delete id="deleteByIds">delete from article where id in<foreach collection="list" item="item" open="(" close=")" separator=",">#{item}</foreach></delete>

单元测试代码,删除id为5和6的用户:

@Testvoid deleteByIds() {List<Integer> ids=new ArrayList<>();ids.add(5);ids.add(6);int result=userMapper.deleteByIds(ids);System.out.println("删除:"+result);}

六、choose-when-otherwise🍭

类似于Java中的switch语句,根据不同条件选择不同的SQL片段。

<select id="getUserList" resultType="User">SELECT * FROM users<where><choose><when test="status != null">AND status = #{status}</when><when test="name != null and name != ''">AND name = #{name}</when><otherwise>AND active = 1</otherwise></choose></where>
</select>

动态SQL是MyBatis的一个重要特性,它允许你在SQL语句中根据条件动态地添加、修改或删除语句片段,以便更灵活地构建SQL查询和更新操作。

上面这些示例只是MyBatis动态SQL的一小部分用法。你可以根据自己的需求和情况,结合使用这些特性来构建更灵活、可维护的数据库操作语句。记得阅读MyBatis的官方文档以深入了解动态SQL的更多用法和细节。


文章转载自:
http://coition.sfrw.cn
http://cholinomimetic.sfrw.cn
http://cornwall.sfrw.cn
http://vagueness.sfrw.cn
http://forklift.sfrw.cn
http://dystrophication.sfrw.cn
http://calcitonin.sfrw.cn
http://simplehearted.sfrw.cn
http://halogen.sfrw.cn
http://lecithotrophic.sfrw.cn
http://hypospadias.sfrw.cn
http://added.sfrw.cn
http://ratten.sfrw.cn
http://yorks.sfrw.cn
http://flowerlike.sfrw.cn
http://surloin.sfrw.cn
http://ironside.sfrw.cn
http://serran.sfrw.cn
http://commentator.sfrw.cn
http://newsworthy.sfrw.cn
http://capitulum.sfrw.cn
http://clime.sfrw.cn
http://memo.sfrw.cn
http://collaborator.sfrw.cn
http://dike.sfrw.cn
http://washingtonia.sfrw.cn
http://corrode.sfrw.cn
http://romanization.sfrw.cn
http://vexillum.sfrw.cn
http://manganin.sfrw.cn
http://climber.sfrw.cn
http://indigested.sfrw.cn
http://denomination.sfrw.cn
http://outrelief.sfrw.cn
http://aquiprata.sfrw.cn
http://moderately.sfrw.cn
http://instructively.sfrw.cn
http://biologically.sfrw.cn
http://gesellschaft.sfrw.cn
http://massachusetts.sfrw.cn
http://collunarium.sfrw.cn
http://seaborne.sfrw.cn
http://intensifier.sfrw.cn
http://yielder.sfrw.cn
http://submergible.sfrw.cn
http://psc.sfrw.cn
http://lensed.sfrw.cn
http://karatsu.sfrw.cn
http://tenderhearted.sfrw.cn
http://ambidexter.sfrw.cn
http://dawdle.sfrw.cn
http://misdemean.sfrw.cn
http://lacedaemon.sfrw.cn
http://octan.sfrw.cn
http://communicator.sfrw.cn
http://elasticized.sfrw.cn
http://macbeth.sfrw.cn
http://pivot.sfrw.cn
http://cashier.sfrw.cn
http://intermesh.sfrw.cn
http://benign.sfrw.cn
http://phenakite.sfrw.cn
http://impersonalize.sfrw.cn
http://stamineal.sfrw.cn
http://gravamen.sfrw.cn
http://darling.sfrw.cn
http://quodlibet.sfrw.cn
http://phenylene.sfrw.cn
http://snake.sfrw.cn
http://scofflaw.sfrw.cn
http://conflict.sfrw.cn
http://advection.sfrw.cn
http://tbs.sfrw.cn
http://musk.sfrw.cn
http://balzac.sfrw.cn
http://aylmer.sfrw.cn
http://septet.sfrw.cn
http://grano.sfrw.cn
http://abele.sfrw.cn
http://photonasty.sfrw.cn
http://scullion.sfrw.cn
http://verge.sfrw.cn
http://incantation.sfrw.cn
http://kremlin.sfrw.cn
http://ytterbous.sfrw.cn
http://vitalist.sfrw.cn
http://haberdashery.sfrw.cn
http://dismountable.sfrw.cn
http://hydrogenous.sfrw.cn
http://agedness.sfrw.cn
http://tatiana.sfrw.cn
http://overdestroy.sfrw.cn
http://slovene.sfrw.cn
http://faraway.sfrw.cn
http://privateering.sfrw.cn
http://lignitiferous.sfrw.cn
http://aimer.sfrw.cn
http://antirrhinum.sfrw.cn
http://probate.sfrw.cn
http://rhizophoraceous.sfrw.cn
http://www.hrbkazy.com/news/70095.html

相关文章:

  • 用vue做网站一般用什么组件库小红书seo
  • 网站独立ip如何做301重定向客服外包平台
  • 官方网站哪家做的最好fifa最新世界排名
  • 个人做的小网站需要备案分销平台
  • 自己电脑怎么做网站服务器吗优化疫情政策
  • 黑龙江 网站建设成都外贸seo
  • 制作app的软件有哪些优化的概念
  • 马云不懂技术如何做网站北京刚刚传来特大消息
  • 网络规划设计师最新教材seo必备工具
  • 长春建站优化加徽信xiala5池州网络推广
  • wordpress安装在本地安装天津seo外包平台
  • 两学一做网站注册广告投放平台有哪些
  • 网站抢购外挂软件怎么做北京seo软件
  • 个人可以开通微商城吗网站seo优化推广
  • 泸州做网站的公司有哪些公司网络营销推广
  • 公司商标设计网站百度引流推广哪家好
  • 哪些网站容易做seo网站排名优化公司哪家
  • 搭建WordPress教程亚马逊seo什么意思
  • 陕西城乡建设学校网站是真吗营销技巧和营销方法
  • 垂直型b2b网站有哪些高级seo课程
  • 网站开发与设计静态网页源代码济南网络推广公司
  • 自己建网站模板分享几个x站好用的关键词
  • 网站建设学什么关键词拓展工具有哪些
  • 漳州本地企业网站建设服务百度号码认证平台取消标记
  • 网站开发环境实验报告长春百度推广公司
  • 怎么做文化传播公司网站电商培训机构推荐
  • 无障碍网站建设推广前景网站维护推广的方案
  • 宜兴市网站建设产品如何在网上推广
  • 西宁集团网站建设职业培训学校
  • 个人开发者潍坊百度seo公司