最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis動態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解

 更新時間:2016年09月07日 10:05:08   作者:YEN_CSDN  
動態(tài)SQL就是動態(tài)的生成SQL。接下來通過本文給大家介紹Mybatis動態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解的相關(guān)知識,感興趣的朋友一起看看吧

動態(tài)SQL就是動態(tài)的生成SQL。

if標(biāo)記

假設(shè)有這樣一種需求:查詢用戶,當(dāng)用戶名不等于“admin”的時候,我們還需要密碼為123456。

數(shù)據(jù)庫中的數(shù)據(jù)為:

這里寫圖片描述

MyBatisConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--定義別名 注意typeAliases一定要在environments之前-->
<typeAliases>
<typeAlias type="jike.book.pojo.JiKeUser" alias="JiKeUser"/>
<typeAlias type="jike.book.pojo.Author" alias="Author"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/jikebook"/>
<property name="username" value="root"/>
<property name="password" value="*****"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="jike/book/map/jikeUser.xml"/>
</mappers>
</configuration>

JiKeUser.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="/">
<select id="selectSQL" resultType="JiKeUser" parameterType="JiKeUser">
SELECT * FROM jikebook.jikeuser
WHERE 1=1
<if test="userName!='admin'">
AND password=#{password}
</if>
</select>
</mapper>

測試類:

package jike.book.test;
import jike.book.pojo.JiKeUser;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
/**
* DateTime: 2016/9/6 13:36
* 功能:
* 思路:
*/
public class TestSQL {
public static void main(String[] args) {
// 資源路徑
String resource="jike/book/map/MyBatisConfig.xml";
Reader reader=null;
SqlSession session;
try {
reader= Resources.getResourceAsReader(resource);
} catch ( IOException e ) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
session=sqlMapper.openSession();
JiKeUser jiKeUser=new JiKeUser();
jiKeUser.setPassword("123456");
List<JiKeUser> userList=session.selectList("selectSQL",jiKeUser);
for ( JiKeUser user:userList ) {
System.out.println("userName:"+user.getUserName());
}
session.close();
}
}

運(yùn)行結(jié)果為:

這里寫圖片描述

choose標(biāo)記

假設(shè)我們當(dāng)前有這么一個需求:查詢用戶,如果用戶名不為空就加上用戶名這個條件,如果id不為空也加上id這個條件,否則的話就是設(shè)置密碼不為空,這就是一個多路選擇。

MyBatisConfig.xml不改變,在JikeUser.xml中加上:

<select id="selectJiKeUserChoose" resultType="JiKeUser" parameterType="JiKeUser">
select * from jikeuser where 1=1
<choose>
<when test="userName!=null">
and userName like #{userName}
</when>
<when test="id!=0">
and id =#{id}
</when>
<otherwise>
and password is not null
</otherwise>
</choose>
</select>

測試類:假設(shè)用戶名不為空:

package jike.book.test;
import jike.book.pojo.JiKeUser;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
/**
* DateTime: 2016/9/6 13:36
* 功能:
* 思路:
*/
public class TestSQL {
public static void main(String[] args) {
// 資源路徑
String resource="jike/book/map/MyBatisConfig.xml";
Reader reader=null;
SqlSession session;
try {
reader= Resources.getResourceAsReader(resource);
} catch ( IOException e ) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
session=sqlMapper.openSession();
JiKeUser jiKeUser=new JiKeUser();
jiKeUser.setUserName("YEN");
List<JiKeUser> userList=session.selectList("selectJiKeUserChoose",jiKeUser);
for ( JiKeUser user:userList ) {
System.out.println("userName:"+user.getUserName());
}
session.close();
}
}

結(jié)果為:

這里寫圖片描述

假設(shè)不設(shè)置用戶名這個條件,即注釋掉jiKeUser.setUserName("YEN");:

這里寫圖片描述

where標(biāo)記、set標(biāo)記

上面我們在choose中查詢是不能確定子連接條件中的and是寫還是不寫,因此加了一個1=1.而where會只能的去判斷該不該加。

<select id="selectJiKeUserWhere" resultType="JiKeUser" parameterType="JiKeUser">
select * from jikeuser
<where>
<if test="userName!=null">
and userName like #{userName}
</if>
<if test="id!=null">
and id =#{id}
</if>
</where>
</select>

這里寫圖片描述 

set標(biāo)記智能賦值,會自動去掉多余的”,”。

<update id="updateJiKeUserSet" parameterType="JiKeUser">
update JiKeUser
<set>
<if test="userName != null">userName=#{userName},</if>
<if test="password != null">password=#{password},</if>
</set>
where id=#{id}
</update>

操作之前的數(shù)據(jù):

這里寫圖片描述

操作:

這里寫圖片描述

操作結(jié)果:

這里寫圖片描述

<update id="updateUserTrim" parameterType="JiKeUser">
UPDATE JiKeUser
<trim prefix="SET" suffixOverrides="," suffix="WHERE id = #{id}" >
<if test="userName != null and userName != '' ">
userName = #{userName},
</if>
<if test="password != null and password != '' ">
password=#{password},
</if>
</trim>
</update>

這里寫圖片描述

foreach標(biāo)記

通常用于循環(huán)查詢或循環(huán)賦值

<select id="selectJiKeUserForeach" resultType="JiKeUser" parameterType="list">
select * from jikeuser
<where>
id in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</where>
</select>

測試:

這里寫圖片描述

以上所述是小編給大家介紹的Mybatis動態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 淺談Java 并發(fā)的底層實(shí)現(xiàn)

    淺談Java 并發(fā)的底層實(shí)現(xiàn)

    這篇文章主要介紹了淺談Java 并發(fā)的底層實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 手把手帶你實(shí)現(xiàn)一個萌芽版的Spring容器

    手把手帶你實(shí)現(xiàn)一個萌芽版的Spring容器

    大家好,我是老三,Spring是我們最常用的開源框架,經(jīng)過多年發(fā)展,Spring已經(jīng)發(fā)展成枝繁葉茂的大樹,讓我們難以窺其全貌,這節(jié),我們回歸Spring的本質(zhì),五分鐘手?jǐn)]一個Spring容器,揭開Spring神秘的面紗
    2022-03-03
  • Springboot使用thymeleaf動態(tài)模板實(shí)現(xiàn)刷新

    Springboot使用thymeleaf動態(tài)模板實(shí)現(xiàn)刷新

    這篇文章主要介紹了Springboot使用thymeleaf動態(tài)模板實(shí)現(xiàn)刷新,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • App登陸java后臺處理和用戶權(quán)限驗證

    App登陸java后臺處理和用戶權(quán)限驗證

    這篇文章主要為大家詳細(xì)介紹了App登陸java后臺處理和用戶權(quán)限驗證,感興趣的朋友可以參考一下
    2016-06-06
  • Java 容器類源碼詳解 Set

    Java 容器類源碼詳解 Set

    這篇文章主要介紹了Java 容器類源碼詳解 Set,Set 表示由無重復(fù)對象組成的集合,也是集合框架中重要的一種集合類型,直接擴(kuò)展自 Collection 接口。,需要的朋友可以參考下
    2019-06-06
  • (starters)springboot-starter整合阿里云datahub方式

    (starters)springboot-starter整合阿里云datahub方式

    這篇文章主要介紹了(starters)springboot-starter整合阿里云datahub方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • IDEA2019.3配置Hibernate的詳細(xì)教程(未使用IDEA的自動化)

    IDEA2019.3配置Hibernate的詳細(xì)教程(未使用IDEA的自動化)

    這篇文章主要介紹了IDEA2019.3配置Hibernate的詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Java編寫實(shí)現(xiàn)九宮格應(yīng)用

    Java編寫實(shí)現(xiàn)九宮格應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Java編寫實(shí)現(xiàn)九宮格應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過濾器功能

    springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過濾器功能

    本文主要介紹了springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過濾器功能,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 解決異常:Invalid?keystore?format,springboot配置ssl證書格式不合法問題

    解決異常:Invalid?keystore?format,springboot配置ssl證書格式不合法問題

    這篇文章主要介紹了解決異常:Invalid?keystore?format,springboot配置ssl證書格式不合法問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

南汇区| 萨迦县| 长岭县| 霍城县| 开化县| 曲松县| 同心县| 东海县| 张家界市| 盘锦市| 南宁市| 弥渡县| 英吉沙县| 建平县| 永定县| 响水县| 宜都市| 鄂尔多斯市| 漯河市| 长海县| 天等县| 贵港市| 龙川县| 青海省| 句容市| 丘北县| 徐闻县| 米泉市| 隆化县| 南昌市| 谢通门县| 嘉义县| 绥德县| 晴隆县| 隆昌县| 精河县| 许昌市| 漳州市| 长寿区| 东海县| 新绛县|