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

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

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

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

if標(biāo)記

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

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

這里寫(xiě)圖片描述

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>

測(cè)試類(lèi):

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é)果為:

這里寫(xiě)圖片描述

choose標(biāo)記

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

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>

測(cè)試類(lèi):假設(shè)用戶(hù)名不為空:

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é)果為:

這里寫(xiě)圖片描述

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

這里寫(xiě)圖片描述

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

上面我們?cè)赾hoose中查詢(xún)是不能確定子連接條件中的and是寫(xiě)還是不寫(xiě),因此加了一個(gè)1=1.而where會(huì)只能的去判斷該不該加。

<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>

這里寫(xiě)圖片描述 

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

<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ù):

這里寫(xiě)圖片描述

操作:

這里寫(xiě)圖片描述

操作結(jié)果:

這里寫(xiě)圖片描述

<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>

這里寫(xiě)圖片描述

foreach標(biāo)記

通常用于循環(huán)查詢(xú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>

測(cè)試:

這里寫(xiě)圖片描述

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

相關(guān)文章

最新評(píng)論

舒城县| 中牟县| 孝昌县| 桦南县| 莱西市| 留坝县| 淳化县| 榆林市| 芦山县| 高唐县| 兴国县| 张家港市| 达州市| 玉山县| 岱山县| 当阳市| 多伦县| 高雄市| 电白县| 七台河市| 阿勒泰市| 黄龙县| 茌平县| 侯马市| 县级市| 平舆县| 兴和县| 珠海市| 金坛市| 湄潭县| 阿鲁科尔沁旗| 大埔区| 寻乌县| 贺州市| 霍林郭勒市| 许昌县| 康乐县| 商城县| 铜川市| 铁岭市| 会昌县|