<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      1 MyBatis動態(tài)SQL之綜述和 if 語句

      摘要:使用 MyBatis 動態(tài)SQL,通過 if, choose, when, otherwise, trim, where, set, foreach和bind等標(biāo)簽,可組合成非常靈活的SQL語句,從而既提高 SQL 語句的準(zhǔn)確性,也大大提高攻城獅的開關(guān)效率。

      1 MyBatis動態(tài)SQL之if 語句
      2 MyBatis動態(tài)sql之where標(biāo)簽|轉(zhuǎn)
      3 MyBatis動態(tài)SQL之set標(biāo)簽|轉(zhuǎn)
      4 MyBatis動態(tài)SQL之trim元素|轉(zhuǎn)
      5 MyBatis動態(tài)sql中foreach標(biāo)簽的使用
      6 MyBatis動態(tài)SQL之choose(when、otherwise)語句
      7 MyBatis動態(tài)SQL之bind標(biāo)簽|轉(zhuǎn)

      綜述

      ??動態(tài) SQL 是 MyBatis 的強(qiáng)大特性之一。如果你使用過 JDBC 或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL,可以徹底擺脫這種痛苦。

      ??使用動態(tài) SQL 并非一件易事,但MyBatis 3 基于功能強(qiáng)大的 OGNL 表達(dá)式借助可用于任何 SQL 映射語句中的、強(qiáng)大的動態(tài) SQL 語言,顯著地提升了這一特性的易用性。

      OGNL,全稱為Object-Graph Navigation Language,它是一個功能強(qiáng)大的表達(dá)式語言,用來獲取和設(shè)置Java對象的屬性,它旨在提供一個更高的更抽象的層次來對Java對象圖進(jìn)行導(dǎo)航。

      ??如果你之前用過 JSTL 或任何基于類 XML 語言的文本處理器,你對動態(tài) SQL 元素可能會感覺似曾相識。MyBatis 3 常用的動態(tài)SQL元素包括:

      • if
      • where
      • set
      • trim
      • foreach
      • choose (when、otherwise)

      ??下面我們就用一個簡單示例來看看在MyBatis中怎么使用動態(tài)SQL。

      定義表結(jié)果和實(shí)體類

      ??首先,在數(shù)據(jù)庫創(chuàng)建一個表tb_employee,并插入測試數(shù)據(jù)。SQL腳本如下:

      CREATE TABLE tb_employee(
      ID INT(11) PRIMARY KEY AUTO_INCREMENT,
      loginname VARCHAR(18),
      PASSWORD VARCHAR(18),
      NAME VARCHAR(18) DEEAULT NULL,
      SEX CHAR(2) DEEAULT NULL,
      AGE INT(11) DEFAULT NULL,
      phone VARCHAR(21),
      sal DOUBLE,
      state VARCHAR(18)
      );
      INSERT INTO tb_employee(loginname,PASSWORD,NAMB,sex,age,phone,sal,state
      VALUES('jack','123456','樓蘭胡楊",'男',26,'13900000001',9800,'ACTIVE');
      INSERT INTO tb_employee (loginname,PASSWORD,NAMB,sex,age,phone,sal,state)
      VALUES('rose','123456','Wiener','女',21,'13900000002',6800,'ACTIVE');
      INSERT INTO tb_employee (loginname,PASSWORD,NAME,sex,age,phone,sal,state)
      VALUES('tom','123456','湯姆','男',25,'13900000003,8800,'ACTIVE');
      INSERT INTO tb_employee (loginname,PASSWORD,NAME sex,age,phone,sal,state)
      VALUES('alice','123456','愛麗絲','女’,20,'13900000004,5800,ACTIVE');
      

      ??在數(shù)據(jù)庫中執(zhí)行SQL 腳本,完成創(chuàng)建tb_employee的操作。用實(shí)體類Employee映射tb_employee表。tb_employee 和 mployee將貫穿動態(tài)SQL所有章節(jié)。

      if語句

      ??動態(tài)SQL通常會做的事情是有條件地包含where子句的一部分。比如:

      <select id="selectEmployeeById" resultType="cn.mybatis.domain.Employee">
      SELECT * FROM tb_employee WHERE state = 'ACTIVE'
      <!-- 可選條件,如果傳進(jìn)來的參數(shù)有id屬性,則加上id查詢條件-->
      <if test="id != null">
      and id = #{id}
      </if>
      </select>
      

      ??假設(shè)在上述SQL中查詢條件id的值不為null,那么控制臺打印出來的SQL為:

      SBLECT * EROM tb_employee WHERE state = 'ACTIVE' and id = ?
      

      ??以上語句提供了一個可選的、根據(jù)id查找Employee的功能。如果沒有傳入id,那么所有處于“ACTIVE”狀態(tài)的Employee都會被返回; 反之若傳入了id,那么就會把查找id內(nèi)容的Employee結(jié)果返回。如果想通過兩個條件搜索該怎么辦呢? 很簡單,只要多加入一個條件即可,例如:

      <select id="selectEmployeeByIdLike" resultType="cn.mybatis.domain.Employee">
      SELECT * FROM tb_employee WHERE state = 'ACTIVE'
      <!-- 可選條件,如果傳進(jìn)來的參數(shù)有id屬性,則加上id查詢條件-->
      <if test="id != null">
      and id = #{id}
      </if>
      <!-- 兩個可選條件,例如登錄功能的登錄名和密碼查詢-->
      <if test="loginname != null and password != null">
      and loginname = #{loginname} and password = #{password)
      </if>
      </select>
      

      可以使用兩個等于號==判斷id等于null的場景,if語句示例如下:

      <if test="id == null">
      

      ??如果不使用if語句,則其SQL腳本如下:

      <select id="selectByName" resultType="cn.mybatis.domain.Employee">
          <!-- 這和普通的sql 查詢語句十分相似 -->
          select * from tb_employee WHERE state = 'ACTIVE'and id = #{id} and loginname=#{loginname} and password=#{password}
      </select>
      

      ??我們從上面的查詢語句可以發(fā)現(xiàn),如果 #{loginname} 為空,那么查詢結(jié)果也是空,使用起來缺乏靈活性,而動態(tài)SQL完全不畏懼這個。這就是動態(tài)SQL的長處之所在。

      Reference

      posted @ 2022-03-30 08:02  樓蘭胡楊  閱讀(309)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 最近中文字幕完整版hd| 国产精品综合av一区二区国产馆| 又湿又紧又大又爽a视频| 国产日韩一区二区在线| 久久青草国产精品一区| 国产一区二区一卡二卡| 十九岁的日本电影免费观看| 久久精品国产亚洲av麻豆软件| 日韩精品中文字一区二区| 加勒比无码人妻东京热| 91精品91久久久久久| 亚洲一区二区色情苍井空| 亚洲av无码之国产精品网址蜜芽 | 丝袜美腿诱惑之亚洲综合网| 国产精品自在线拍国产| 国产成人高清精品亚洲| 华容县| 性色a码一区二区三区天美传媒 | 亚洲成av人片在www鸭子| 黑人巨大精品欧美| gogogo高清在线观看视频中文| 国产午夜亚洲精品福利| 极品少妇的粉嫩小泬视频| 国产va免费精品观看| 无遮挡高潮国产免费观看| 日韩av熟女人妻一区二| 大胆欧美熟妇xxbbwwbw高潮了| 国产午精品午夜福利757视频播放| 国产成人免费午夜在线观看| 国产欧美日韩视频一区二区三区 | 综合激情网一区二区三区| 亚洲国产日韩精品一区二区三区| a4yy私人毛片| 日本视频一区二区三区1| 熟妇人妻不卡中文字幕| 欧美大bbbb流白水| 亚洲无人区一码二码三码| 东方四虎av在线观看| 湖北省| 乱人伦人妻中文字幕在线| 国产黄色看三级三级三级|