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

郑州国外网站建设西地那非最佳起效时间

郑州国外网站建设,西地那非最佳起效时间,携程网站模板,黑龙江网站建设开发动态SQL标签简介: MyBatis的一个强大的特性之一通常是它的动态SQL能力。如果你有使用JDBC或其他相似框架的经验,你就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态SQL可以彻底处理这种痛苦。 Mybatis中实现动态sql的标签有&#x…

动态SQL标签简介:

        MyBatis的一个强大的特性之一通常是它的动态SQL能力。如果你有使用JDBC或其他相似框架的经验,你就明白条件地串联SQL字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态SQL可以彻底处理这种痛苦。

Mybatis中实现动态sql的标签有: <if>        <where>        <trim>        <set>        <choose>       <foreach>

示例对象(Student):

package com.ffyc.mybatis.model;public class Student {private Integer id;private Integer num;//建议不使用基本类型,使用包装类型,包装类型默认值都是null,后期判断会方便private String name;private String gender;private Major major;//类与类之间的关联关系    has-a关系   什么有什么,将专业信息封装到专业对象中,减少冗余public Major getMajor() {return major;}public void setMajor(Major major) {this.major = major;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getNum() {return num;}public void setNum(Integer num) {this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Student{" +"id=" + id +", num=" + num +", name='" + name + '\'' +", gender='" + gender + '\'' +", major=" + major +'}';}
}

<if>标签

        判断标签,用于添加判断条件:

        当我们查询学生列表时,若是不查询特定名字,则打印所有学生信息,若是要查询特定名字,则我们只需要选择对应名字的学生,示例如下:

Dao:

List<Student> findStudents(Student student);
<select id="findStudents" resultType="Student">select * from student<if test="name!=null">where name = #{name}</if>
</select>-->

<where>标签 

        判断内部if标签如果有一个返回true,会自动添加一个where关键字,还会自动去除where后多余关键字.

        在进行多条件查询时,例如:姓名,编号,性别。若性别为null则只需要查询姓名与编号相同的行,意思就是,几个元素不为null,就加几个判断条件。这时候就可以使用where进行多个条件的判断:

Dao:

List<Student> findStudents(Student student);
<select id="findStudents" resultType="Student">select * from student where<if test="name!=null">name = #{name}</if><if test="num!=0">and num = #{num}</if><if test="gender!=null">and gender = #{gender}</if></select>

很明显,当我们写出来后会发现一个很糟糕的问题,要是传入的name值为null,查询语句:

        select * from student where and num=? and gender=?

where后面出现了一个多余的关键字‘and’.

这该怎么解决?

有一种简单而暴力的方法:

<select id="findStudents" resultType="Student">select * from student where 1=1<if test="name!=null">and name = #{name}</if><if test="num!=0">and num = #{num}</if><if test="gender!=null">and gender = #{gender}</if></select>

这样一来,就不会出现where后面出现多余关键字的现象,这也是在<where>标签出现之前程序猿面对这种问题采取的措施。

有人就觉得了:有没有优雅一点的写法?

        这时候就到我们<where>标签出场了:

<select id="findStudents" resultType="Student">select * from student<where><if test="name!=null">and name = #{name}</if><if test="num!=0">and num = #{num}</if><if test="gender!=null">and gender = #{gender}</if></where></select>

雅!太雅了!<where>标签会自动添加一个where关键字,还会自动去除where后多余关键字

<choose>标签

        <choose>标签与<when>标签和<otherwise>标签配用用于判定多重条件的语句 

        应用场景:若传值有名字则查找名字,若没有则查找编号若还是没有则查找名为'kk'的人

Dao:

List<Student> findStudents(Student student);
<select id="findStudents" resultType="Student">select * from student where<choose><when test="name!=null">name=#{name}</when><when test="num!=null">num=#{num}</when><otherwise>name='kk'</otherwise></choose></select>

当传值为:name=“张三” num=1

 

当传值为: name=null num=1

 当传值为: name=null num=null

<trim>标签 

        当我们需要修改某些数据时,我们可以用到<trim>来删去多余的符号(或关键字)或是添加我们需要的符号(或关键字)

        应用场景:修改指定id的某几列

Dao:

void updatestudent(Student student);
<update id="updatestudent" parameterType="student">update student<trim prefix="set" suffixOverrides=","><if test="name!=null">name=#{name},</if><if test="num!=null">num=#{num},</if><if test="gender!=null">gender=#{gender}</if></trim>where id=#{id}</update>

在student后添加“set”,删去最后的“,”.

当传值为:name=op        num=1005        id=1

 <set>标签

        在标签前添加set,将最后的多余的逗号删除

        应用场景:与上面的<trim>标签相同,修改指定id的某几列

Dao:

void updatestudent(Student student);
<update id="updatestudent" parameterType="student">update student<set><if test="name!=null">name=#{name},</if><if test="num!=null">num=#{num},</if><if test="gender!=null">gender=#{gender}</if></set>where id=#{id}</update>

<foreach>标签 

        主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。

        item: 定义一个变量,接收每次循环中获得的元素

        collection: 循环的集合类型 list-集合 array-数量

        open: 循环开始的一个符号

        close: 循环结束的一个符号

        separator: 每次循环后的一个分隔符号

        index: 循环时生成的索引

        应用场景:当需要使用到一串相同类型变量时,可以与List或Integer[]搭配使用

         (1)当需要删除一组数据时我们可以接收这组数据的id,再用<foreeach>标签循环检索

Dao:

void deleteStudent(List<Integer> list);

 或 

void deleteStudent(Integer[] array);
<delete id="deleteStudent">delete from student where id in<foreach item="a" collection="list" open="(" close=")" separator=",">#{a}</foreach></delete>

当传值为:[7,8]

        (2)查找所有学生的指定信息

Dao:

List<Student> findstudentbycolumn(List<String> list);
<select id="findstudentbycolumn" resultType="student">select<foreach item="a" collection="list" separator=",">${a}</foreach>from student</select>

当传值为:name,num

最后补充一点:

        为什么整数类型不用基本类型而是用包装类?

        其实基本类型是可以使用的,但是基本类型被定义后默认值为0,而包装类型默认值为null,若是基本类型每次判断需要把!=null换成!=0,这样我们需要判断该变量的初始值是0还是null,而使用包装类就不需要思考,因为和其它变量一样都是null,因此一般使用包装类进行交互。

http://www.yayakq.cn/news/408286/

相关文章:

  • wordpress整站生成html保定企业自助建站
  • 青岛网站建设博采网络广州市手机网站建设怎么样
  • 网站建设技术简易留言板大连开发区论坛网
  • 网络文化有限公司网站建设策划书建网页还是网站
  • 中国招标机构哪个网站做的好网站的风格与布局的设计方案
  • 重庆建设定额网站重庆建一科技发展有限公司
  • 滨州网站建设电话网站推广的目标
  • 网站一定备案吗视频剪辑培训机构
  • 张店网站建设yx718公司名称大全二字
  • 阿克苏市建设银行网站怎么创作一个微信小程序
  • 网站优化seo方案搭设企业网站教程
  • php 手机网站 模板googleseo排名公司
  • vscode 网站开发大连高端网页公司
  • 云南网站建设专家西安市建设工程信息网招投标平台
  • 建设跨境电商网站厦门人才网唯一官方网站
  • 乡镇网站建设工作计划自己在线制作logo免费图片
  • 登封市城乡建设路网站重庆网站平台
  • 简洁 网站模板河南做网站联系电话
  • 网站群建设管理办法wordpress网站描述
  • 百度网站排名 查询高端网站建设浩森宇特
  • 北京网站推广公司排名网页设计模板html代码音乐
  • 写作网站哪个好学校网站建设学生文明上网
  • 简述网站建设优坏的评价标准定制网站制作公司有哪些
  • 自己做的砍价网站北京响应式网站
  • 网站建设和托管哪家好青岛新公司网站建设推广
  • 网站有哪些内容外贸代理公司
  • 杭州企业网站建站模板四川星星建设集团有限公司网站
  • 凤岗做网站系统建设方案怎么写
  • 网页网站设计公司排行榜在线观看永久免费网站网址
  • 个人备案的域名拿来做别的网站做网站服务器多大的好