MyBatis?@Select注解介紹:基本用法與動態(tài)SQL拼寫方式
1、@Select注解基本用法
@Select注解的目的是為了取代xml中的select標(biāo)簽,只作用于方法上面。
下面看一下@Select注解的源碼介紹:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Select { ? ? String[] value(); }
從上述可以看到兩點(diǎn)信息:
(1)@Select注解只能修飾方法
(2)@Select注解的值是字符數(shù)組。
所以,@Select注解的用法是這樣的:
@Select({ "select * from xxx", "select * from yyy" }) Person selectPersonById(Integer id);
雖然@Select注解的值是字符數(shù)組,但是真正生效的應(yīng)該是最后那條SQL語句。這一點(diǎn)請大家要留意一下。
2、@Select注解動態(tài)SQL拼寫
普通的字符串值,只能實(shí)現(xiàn)變量的替換功能,如下所示,
@Select("select * from t_person where id = #{id}") Person selectPersonById(Integer id);
如果要想實(shí)現(xiàn)復(fù)雜的邏輯判斷,則需要使用標(biāo)簽,如下所示:
@Select("<script> select * from t_person where id = #{id}? <when test='address !=null'> and address = #{address}? </when> </script>") Person selectPersonById(Integer id);
其實(shí),標(biāo)簽并非是@Select注解專用的,其他的注解,例如@Insert,@Update等等,都可以使用的。
@Select動態(tài)參數(shù)參考
今天發(fā)現(xiàn)一個問題,使用標(biāo)簽進(jìn)行查詢語句的拼接時,逗號和引號老處理不好,所以在此記錄下,供以后參考
@Select("<script>" + " select * from tb_crowd_fund_person_record a,tb_crowd_fund_info b where b.id=a.crowd_fund_info_id " + " <if test='activeStatus != null and activeStatus != \"\"'> "+ " and b.active_status=#{activeStatus} " + " </if> " + " <if test='createUser != null and createUser != \"\"'> "+ " and a.create_user=#{createUser} " + " </if> " + "</script>") List<String> findByType(Map<String,String> map);
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)去掉字符串重復(fù)字母的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)去掉字符串重復(fù)字母的方法,涉及java針對字符串的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里
這篇文章主要介紹了使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08圖書管理系統(tǒng)java代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了java代碼實(shí)現(xiàn)的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01仿京東平臺框架開發(fā)開放平臺(包含需求,服務(wù)端代碼,SDK代碼)
現(xiàn)在開放平臺越來越多了,下面針對仿京東開放平臺框架,封裝自己的開放平臺,分享給大家。先感謝一下京東開放平臺的技術(shù)大佬們,下面從開放平臺需求,服務(wù)端代碼,SDK代碼三大塊進(jìn)行分享2021-06-06