1. 程式人生 > >Mybatis:關於動態生成sql語句的一些問題

Mybatis:關於動態生成sql語句的一些問題

(1)

<select id="selectClassByID" resultMap="ClassesResultMap" parameterType="int">
    select cid,cname,sid,sname from class left join student on cid=s_cid 
    <trim prefix="where" prefixOverrides="and|or">
        <if test="id != null">and cid=#{id}</if>
    </trim>
</select
>

報錯:無法找到id這個引數
解決辦法:1、傳入map,鍵為id,即可找到id;
2、在介面的方法加入註解 public Classes selectClassByID(@Param(“id”) int cid)
此處”id”是sql語句的id這個引數

(2)trim (對包含的內容加上 prefix,或者 suffix 等,字首,字尾)

<trim prefix="where" prefixOverrides="and|or"></trim>   

解釋:在trim中,若開頭是“and|or”,則用”where”替換”and|or”

<trim prefix="(" suffix=")" suffixOverrides=","></trim>`

解釋:在trim中,若結尾是“,”,則用”)”替換”,”
(3)
foreach(在實現 mybatis in 語句查詢時特別有用)
open:foreach程式碼的開始符號
close:foreach程式碼的關閉符號
separator:元素之間的分隔符
index:下標
item:迴圈體中的具體物件
1、傳入引數為陣列(集合)型別

<foreach
item="item_para" collection="array(list)" index="index" open="" separator="" close="">#{item_para}</foreach>

2、傳入引數為map型別,鍵為“usertds”,值為一個集合,所以collection為”userids” item為userids中的值

map.put("userids",list);
<foreach item="item_para" collection="userids" index="index" open="" separator="" close="">#{item_para}</foreach>

collection裡只能放三種,1、array;2、list;3、自定義的Map裡的鍵
當collection裡是陣列或者集合(若Map裡放的也是陣列或集合,同樣的做法),index是下標數字;
當collection裡是Map(即自定義的Map裡存放的還是Map),index是collection裡Map的鍵

相關推薦

Mybatis:關於動態生成sql語句一些問題

(1) <select id="selectClassByID" resultMap="ClassesResultMap" parameterType="int"> select cid,cname,sid,sname from cla

動態生成SQL語句,對資料操作

這篇主要是實現了實體類的資料庫CRUD的操作。 在目前的ORM對映框架中,對於操作資料庫的最後一個步驟就是動態生成操作資料庫的SQL語句,而這無非也就是利用實體屬性中的自定義對映機制來實現的,或者就是直接把實體類的屬性名對應表的欄位名,在本示例中,就是採用的後者。 第一

關於動態生成sql語句插入datetime時的注意問題

<insert id="insertDispatchOrder" parameterType="java.util.HashMap"> insert into wyy_dispatch_order <trim prefix="(" suffix="

Java動態生成SQL語句通過JDBC達成資料庫操作

在java中使用jdbc進行資料庫操作的時候 我們或許需要從多個表中進行查詢和插入操作 特別是如果多個表還有相互的依賴關係的話,插入操作就顯得非常難受 因為或許每一個動作,都需要重寫一個完全不同的sql語句 這樣的話程式碼量確實十分的大 而且程式碼會顯

mybatis使用註解替代xml配置,動態生成Sql

key list 數據 很難 pro ring 參考 rec 不知道 mybatis使用註解替代xml配置時,遇到判斷條件是否為null或者為空時,@Select很難搞定,不知道怎麽辦? mybatis3中增加了使用註解來配置Mapper的新特性,使用 SelectPro

mybatis中如何動態列印sql語句到控制檯

前提你已經配置好了你的Log4j的配置,否則你怎麼玩,也不可能在控制檯列印日誌的。   SpringMVC-servlet.xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFa

Mybatis--如何在註解式sql中寫入動態SQL語句

突然需要用到動態SQL,應為之前我們用的是在Mapper層建立一個介面類,然後通過註解式來查詢資料庫的:如下         @Select("SELECT user_id " + " FROM sp_user_relation WHERE up_u

MyBatis中實現動態SQL語句,分頁以及mybatis的常用的配置

<select id="getListByPage" resultType="com.gxa.bj.modle.UserInfoPage" parameterType="com.gxa.bj.modle.UserInfoPage">

mybatis foreach 動態插入sql語句

文章目錄 Model Service dao Mapper 有一個需求是需要寫如下的動態sql , ‘149’,‘145’ 這些個數的不確定的, 那麼就需要用到

Mybatis動態構建SQL語句

1.@SelectProvider[email protected]3.@UpdateProvider[email protected]http://www.cnblogs.com/zhangminghui/p/4903351.html

MBG(Mybatis generator)自動生成sql語句

學習官網 http://www.mybatis.org/generator/含有分頁的外掛建立一個簡單的maven專案  在src/main/java包下  建立一個mbg.xml檔案<?xml version="1.0" encoding="UTF-8"?> &

利用反射生成SQL語句

mman com inf get bool 通過 公開 public .get // 修改學員信息的方法 public bool ModifyStudent(MODEL.Students model) { // 利用反映獲取類對所有屬性,用來動態生成SQL語句

C# 讀取指定文件夾中的全部文件,並按規則生成SQL語句

fun .text line -m ava inf hid 語句 ade 本實例的目的在於: 1 了解怎樣遍歷指定文件夾中的全部文件 2 控制臺怎樣輸入和輸出數據 代碼: using System; using System.IO; nam

Mybatis--<![CDATA[ sql 語句 ]]>

tid sql 語句 start pre 內部 test rim log java 在mapper文件中寫sql語句時,遇到特殊字符時,如:< 等,建議使用<![CDATA[ sql 語句 ]]>標記,將sql語句包裹住,不被解析器解析 在使用myba

使用pdm建表並生成SQL語句

clas 圖片 png nbsp div ima class pos 使用 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 使用pdm建表並生成SQL語句

MyBatis直接執行sql語句mapper

表示 batis 執行sql sql col cda [] result 內容 <select id="queryBySql" resultType="HashMap"> <![CDATA[ ${sql}

hibernateTemplate.delete(t);刪除不了語句,沒有生成sql語句

在spring那個檔案裡生命事務即可 <!-- 生命事務 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&g

spring-data-jpa動態拼接sql語句實現動態的多表條件查詢

** spring-data-jpa 動態拼接sql語句 ** spring-data-jpa對於簡單的資料操作確實使用起來比較方便,但是對於一些比較複雜的動態的多表條件查詢就不是那麼簡單了,對於需要些sql語句並且需要動態的新增條件的時候就得使用jpa的EntityManager來

解析xml檔案動態拼接sql語句

現在有很多開源的持久層框架,比如Mybatis、BeetlSQL、Hibernate、DbUtils。當我們需要自己手寫sql的時候。使用Mybatis、BeetlSQL(這個個人更喜歡,因為結合了hibernate和mybatis各自的優點)框架相對來說更好,因為它將sql 放到配置檔案裡面。

Mybatis的公共sql語句

sql:sql和include配合使用 這個元素可以被用來定義可重用的 SQL 程式碼段,可以包含在其他語句中。它可以被靜態地(在載入引數) 引數化. 不同的屬性值通過包含的例項變化。   一, 定義可重用的 SQL 程式碼段 <sql id="all_c