当前位置: 首页> 房产> 家装 > tk域名注册官网_网站建设的基本过程_seo关键词怎么优化_企业应该如何进行网站推广

tk域名注册官网_网站建设的基本过程_seo关键词怎么优化_企业应该如何进行网站推广

时间:2025/8/9 10:48:46来源:https://blog.csdn.net/hyldzbg/article/details/144069498 浏览次数:0次
tk域名注册官网_网站建设的基本过程_seo关键词怎么优化_企业应该如何进行网站推广

动态SQL

动态SQL是Mybatis的强大特性之一,能够完成不同条件下不同的sql拼接,以下的动态sql均使用XML的方式

举例使用的类

数据库信息

<if>标签

当我们在向数据库插入或者查询一些字段时,相同的sql语句在不同情况下可能会使用不同的字段信息,比如当我们再做一些网上的调查问卷时,会有必选项和非必选项此时就需要我们有选择的插入字段,就用到了<if>标签 

其实可以把<if>就看成是正常的if条件句,test后面跟着的就是判断语句,如果条件符合判断语句就进入<if>标签内部

接口

Integer insertByCondtion(Userinfo userinfo)

 XML实现

<insert id="insertByCondtion">insert into userinfo(<if test="username != null">username</if><if test="password != null">,password</if><if test="age != null">,age</if><if test="gender != null">,gender</if>)values (     <if test="username != null">#{username}</if><if test="password != null">,#{password}</if><if test="age != null">,#{age}</if><if test="gender != null">,#{gender}</if>)</insert>

测试用例

 运行结果

可以看到成功插入我们选择的字段

//注意<if test="username != null">中的username 是传入对象的属性

<trim>标签

刚刚的<if>的XML代码其实有一点bug,如果不插入username直接插入后面的字段的话,那么第一个字段前面会有一个逗号导致sql语句出错(不过这里username没有设定默认值),这时就可以用到<trim>

<trim>有几个属性:

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

 加上<trim>后的代码

 <insert id="insertByCondtion">insert into userinfo<trim prefix="(" suffix=")" prefixOverrides=","><if test="username != null">username</if><if test="password != null">,password</if><if test="age != null">,age</if><if test="gender != null">,gender</if></trim>values<trim prefix="(" suffix=")" prefixOverrides=","><if test="username != null">#{username}</if><if test="password != null">,#{password}</if><if test="age != null">,#{age}</if><if test="gender != null">,#{gender}</if></trim>

测试用例

运行结果

 

<where>标签

接口

List<Userinfo> selectByCondtion(Userinfo userinfo);

 XML代码

<select id="selectByCondtion" resultType="com.wx.demo.model.Userinfo">select * from userinfo
<!--        添加关键字where并去掉最前面的and--><where><if test="username != null">username = #{username}</if><if test="password != null">and password = #{password}</if><if test="age != null">and age = #{age}</if><if test="deleteFlag != null">and delete_flag = #{deleteFlag}</if></where></select>

//这里<where>的作用就是 在标签内部有内容时添加关键字where并去掉最前面的and

测试

运行结果

<where>标签也可以使用<trim prefix="where" prefixOverrides="and">替换,但是当标签内部没有内容时,where关键字也会保留

<set>标签

接口

Integer updateByCondtion(Userinfo userinfo);

XML代码

<update id="updateByCondtion">update userinfo
<!--        生成set语句去掉最后面的","--><set><if test="username != null">username = #{username},</if><if test="password != null">password = #{password},</if><if test="age != null">age = #{age},</if><if test="deleteFlag != null">delete_flag = #{deleteFlag}</if></set>where id = #{id}</update>

 测试

运行结果

 <set>标签也可以使用<trim prefix="set" prefixOverrides=",">代替

<foreach>标签

<foreach>就和正常的foreach语句差不多,主要用于遍历主要有如下属性

  • collection:绑定方法参数中的集合(要从哪个集合里遍历)
  • item:每一遍遍历的对象
  • open:语句开头的字符串
  • close:语句结尾的字符串
  • separator:每次遍历之间间隔的字符串

接口方法:

Integer deleteMore(List<Integer> ids);

XML代码

//代码目的是删除ids集合里的所有id对应的行

<delete id="deleteMore">delete from userinfowhere id in<foreach collection="ids" open="(" close=")" separator="," item="id">#{id}</foreach></delete>

 测试

运行结果

<include>标签

我们的XML代码其实会有很多重复的部分,那么我们可不可以将这部分提出来封装一下呢?当然是可以的就利用<sql>和<include>标签。

我们可以使用<sql>标签将重复的代码片段提取出来进行封装,然后通过<include>标签在我们需要这个代码片段的地方进行引用(<include>通过属性refid属性来制定sql片段)

接口方法

List<Userinfo> selectUserAll();

XML代码

<sql id="selectAll">select * from userinfo</sql>
<select id="selectUserAll" resultType="com.wx.demo.model.Userinfo">
<!--        resultType表示返回的类型--><include refid="selectAll"></include></select>

测试结果

关键字:tk域名注册官网_网站建设的基本过程_seo关键词怎么优化_企业应该如何进行网站推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: