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

南京做网站建设的公司哪家好网页设计基础

南京做网站建设的公司哪家好,网页设计基础,佛山做外贸网站案例,用织梦做的网站怎么上传虚拟简单介绍: 在我们之前使用where关键字进行查询的时候,总是会在后面添加一个11恒等式,并且在每一个可能拼接的SQL语句前面都加上一个and关键字,防止当后续的所有条件都不满足的时候,where关键字在最后直接跟and的时候也…

简单介绍:

在我们之前使用where关键字进行查询的时候,总是会在后面添加一个1=1恒等式,并且在每一个可能拼接的SQL语句前面都加上一个and关键字,防止当后续的所有条件都不满足的时候,where关键字在最后直接跟and的时候也能不报错。在本章节的学习中,我么将要学习一个新的标签<where>可以帮助我们在我们拼接SQL语句的时候i,灵活的添加或者不添加where关键字。

使用方法:

<select id="唯一标识" resultType="结果集映射的实体类">

        select * from student

        <where>

                <if test="判断条件">

                        and 需要拼接的SQL语句

                </if>

                <if test="判断条件">

                        and 需要拼接的SQL语句

                </if>

        </where>

</select>

代码实现:

SQL映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Mappers.dynamicSql"><select id="selectByIdOrName" parameterType="student" resultType="student">select * from student where 1=1
#                             当id的值不等于null并且id的值不是空字符的时候,就会拼接这个SQL语句<if test="id != null and id != ''">and id = #{id}</if>
#                             当name的值不等于null的时候并且name的值不是空字符串的时候,就会拼接这个SQL语句<if test="name != null and name != ''">
#                             注意这个地方是使用了一个concat函数将模糊匹配的百分号和参数进行拼接,在使用的时候注意这个地方不要写错and name like concat ('%',#{name},'%')</if></select><select id="selectAll" resultType="student">select * from student;</select>
<!--    动态SQL中的choose元素-->
<!--    当查询的条件满足第一个when的时候,就拼接第一个when里面的SQL语句-->
<!--    当查询的条件满足第二个when的时候,就拼接第二个when里面的SQL语句-->
<!--    当所有的when都不满足的时候,就拼接otherwise里面的SQL语句-->
<!--    当有多个when里面的条件都满足的时候,就拼接最靠上的一条SQL语句,并且不会执行其他when里面的语句--><select id="selectStudentByIdAndName" resultType="student" >select * from student where 1=1<choose><when test="name != null and name != ''">and name like concat('%',#{name},'%')</when><when test="id != null and id != ''">and id = #{id}</when><otherwise>and password is not null</otherwise></choose></select>
<!--    使用<where>来动态的处理where关键字是否添加--><select id="selectByIdAndWhere" resultType="student">select * from student<where><if test="name != null and name !=''">and name like concat('%',#{name},'%')</if><if test="id != null and id !=''">and id = #{id}</if></where></select>
</mapper>

接口文件:

package Mappers;import com.mybatis.POJO.student;import java.util.List;public interface dynamicSql {List<student> selectByIdOrName(student s);List<student> selectStudentByIdAndName(student s);List<student> selectByIdAndWhere(student s);
}

测试类:

package Mappers;import com.mybatis.POJO.Tools.createSqlSession;
import com.mybatis.POJO.student;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.List;public class dynamicSqlTest {@Testpublic void selectByIdOrName(){SqlSession sqlSession = new createSqlSession().create();dynamicSql dynamicSql = new createSqlSession().createdynamicSql();student s = new student();s.setId(1);s.setName("张三");List<student> stu = sqlSession.selectList("Mappers.dynamicSql.selectByIdOrName", s);for(student student : stu){System.out.println(student.toString());}}@Testpublic void selectStudentByIdAndName(){dynamicSql dynamicSql = new createSqlSession().createdynamicSql();student s =new student();
//        s.setId(1);
//        s.setName("张三");for (student student : dynamicSql.selectStudentByIdAndName(s)) {System.out.println(student);}}@Testpublic void selectAll(){SqlSession sqlSession = new createSqlSession().create();dynamicSql dynamicSql = new createSqlSession().createdynamicSql();List<student> list = sqlSession.selectList("Mappers.dynamicSql.selectAll");for(student student : list){System.out.println(student.toString());}}@Testpublic void selectByIdAndWhere(){SqlSession sqlSession = new createSqlSession().create();dynamicSql dynamicSql = new createSqlSession().createdynamicSql();student s = new student();
//        s.setId(1);s.setName("张三");for (student student : dynamicSql.selectByIdAndWhere(s)) {System.out.println(student.toString());}}
}

运行结果:

当我们使用where标签的时候,即使SQL语句中没有where关键字,MyBatis也会自动的帮助我们进行添加,同样的,如果我们的where关键字后面没有任何的查询语句,MyBatis会帮我们删除多余的where关键字。

当我们正常进行查询的时候:

可以看到我们的查询语句后面是没有where关键字的,接着我们来运行程序:

 

可以看到是可以正常的查询的,说明MyBatis在我们的查询语句后面插入了一个where关键字帮我们构建出了一个完整的SQL语句

如果我们if条件都达不到的时候,也就是说where后面没有任何需要拼接的时候,where还会不会自动添加?:

运行结果:

 

结果依然正常的显示了,说明where关键字并没有添加,这就证明了<where>标签可以动态的自动识别是否应该添加where关键字。 

注意点:

在这个案例中,需要注意的就是<where>标签的位置和<select>的嵌套关系,以及在注意在拼接SQL关键字的时候需要遗漏and关键字。如果出现了运行报错的情况,优先考虑是否是<where>的位置和SQL拼接的问题。

如果出现了查询结果不符合猜想的情况优先考虑是否是因为在SQL拼接的时候遗漏了某些关键字或者是条件判断的错误

http://www.hrbkazy.com/news/19945.html

相关文章:

  • 单页面网站设计网站建设与管理是干什么的
  • asp网站上传到服务器上之后一打开就是download宁波网站制作与推广价格
  • 怎么查网站开发使用的语言广告推广系统
  • 阿q的项目wordpress黑帽seo优化推广
  • wordpress案例站点如何做品牌宣传与推广
  • 什么系统做网站最安全抖音企业推广
  • wordpress 页面如何打开评论家居seo整站优化方案
  • 网站建设的细节处理八种营销模式
  • 垦利住房和城乡建设局网站东莞营销外包公司
  • 重庆网站推广怎么样柳市网站制作
  • 简单的美食网站模板免费下载官网制作公司
  • 网站怎么做好 优帮云外贸营销
  • 家教网站如何做互联网销售平台有哪些
  • 做冷库的网站推广软件哪个好
  • 开源网站建设c盘优化大师
  • 如何做外卖网站app简单网页制作
  • 如何购买网站虚拟主机引流最好的推广方法
  • 百度怎么建设网站吸引人的软文
  • 常州行业网站制作网站运营包括哪些内容
  • sap仓库管理系统抖音排名优化
  • 如何做网站背景青岛百度seo排名
  • wordpress 插件urlseo基础课程
  • 怎么样让网站做的大气北京seo优化wyhseo
  • 网站开发工具 mac成都网络营销搜索推广
  • 深圳网站制作公司多少钱哪些网站可以免费推广
  • 做服装批发的网站哪个比较好外贸公司如何做推广
  • 给别人做网站怎么赚钱吗北京口碑最好的教育机构
  • 网站编辑软件有哪些搜索竞价
  • 杭州手机网站制作公司seo关键词报价查询
  • 简单的电商网站用web怎么做b站2023推广网站