Mybatis使用@param注解四種情況解析
一、方法有多個(gè)參數(shù)
例如:
接口方法:
@Mapper public interface UserMapper { Integer insert(@Param("username") String username, @Param("address") String address); }
對應(yīng)的xml:
<insert id="insert" parameterType="org.javaboy.helloboot.bean.User"> insert into user (username,address) values (#{username},#{address}); </insert>
原因:當(dāng)不使用 @Param 注解時(shí),mybatis 是不認(rèn)識哪個(gè)參數(shù)叫什么名字的,盡管在接口中定義了參數(shù)的名稱,mybatis仍然不認(rèn)識。這時(shí)mybatis將會以接口中參數(shù)定義的順序和SQL語句中的表達(dá)式進(jìn)行映射,這是默認(rèn)的。
二、方法參數(shù)要取別名
例如
@Mapper public interface UserMapper { Integer insert(@Param("username") String username, @Param("address") String address); }
對應(yīng)的xml:
<insert id="insert" parameterType="org.javaboy.helloboot.bean.User"> insert into user (username,address) values (#{username},#{address}); </insert>
三、XML 中的 SQL 使用了 $ 拼接sql
$ 會有注入的問題,但是有的時(shí)候不得不使用 $ 符號,例如要傳入列名或者表名的時(shí)候,這個(gè)時(shí)候必須要添加 @Param 注解
例如:
@Mapper public interface UserMapper { List<User> getAllUsers(@Param("order_by")String order_by); }
對應(yīng)xml:
<select id="getAllUsers" resultType="org.javaboy.helloboot.bean.User"> select * from user <if test="order_by!=null and order_by!=''"> order by ${order_by} desc </if> </select>
四、動(dòng)態(tài) SQL 中使用了參數(shù)作為變量
如果在動(dòng)態(tài) SQL 中使用參數(shù)作為變量,那么也需要 @Param 注解,即使你只有一個(gè)參數(shù)。例如如下方法:
@Mapper public interface UserMapper { List<User> getUserById(@Param("id")Integer id); }
對應(yīng)xml:
<select id="getUserById" resultType="org.javaboy.helloboot.bean.User"> select * from user <if test="id!=null"> where id=#{id} </if> </select>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Java HttpClient和Htmlparser實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲代碼
這篇文章主要介紹了基于Java HttpClient和Htmlparser實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲代碼的相關(guān)資料,需要的朋友可以參考下2015-12-12logback?EvaluatorFilter日志過濾器源碼解讀
這篇文章主要為大家介紹了logback?EvaluatorFilter日志過濾器源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法
本文主要介紹了IDEA快速部署Spring?Boot?項(xiàng)目到Docker的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07SWT(JFace)體驗(yàn)之圖片的動(dòng)態(tài)漸變效果
SWT(JFace)體驗(yàn)之圖片的動(dòng)態(tài)漸變效果2009-06-06