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

詳解Mybatis注解寫法(附10余個(gè)常用例子)

 更新時(shí)間:2019年10月18日 09:06:42   作者:sunnyzyq  
這篇文章主要介紹了詳解Mybatis注解寫法(附10余個(gè)常用例子),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

【前言】

Mybatis 除了 XML 配置寫法,還可以使用注解寫法。

首先需要引入 Mybatis 的依賴:

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.3.2</version>
</dependency>
<dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-spring-boot-starter</artifactId>
  <version>1.1.3</version>
</dependency>

然后在接口上打上對(duì)應(yīng) @Mapper 注解

下面是常用的 Myatis 注解寫法:

【1】新增對(duì)象( 非自增 ID )

插入的時(shí)候,數(shù)據(jù)庫的值字段會(huì)自動(dòng)匹配對(duì)象中同名稱屬性的值。

@Insert(value = { "INSERT INTO user (id, name, age, remark) VALUES (#{id}, #{name}, #{age}, #{remark})" })
public void addUser(User user);

【2】新增對(duì)象( 自增 ID )

如果數(shù)據(jù)庫user表的 id 是自增長(zhǎng),我們可以加上 @Options 注解,那么該對(duì)象在插入后,id 屬性會(huì)自動(dòng)獲取到主鍵。

@Options(useGeneratedKeys=true, keyProperty="id") 其中的 id 對(duì)應(yīng)數(shù)據(jù)庫表中的主鍵字段。

@Insert(value = { "INSERT INTO user (name, age, remark) VALUES (#{name}, #{age}, #{remark})" })
@Options(useGeneratedKeys=true, keyProperty="id")
public void insertUser(User user);

【3】根據(jù) ID 查詢對(duì)象

 @Param(value = "id") 其中的 id 對(duì)應(yīng) SQL 語句中的 #{id}

@Select("SELECT * FROM user WHERE id = #{id}")
public User getUserById(@Param(value = "id") long id);

在查詢對(duì)象的過程中,表字段會(huì)自動(dòng)裝箱給同名屬性。當(dāng)然,也可以寫成綁定形式。

如下:@Result 注解中 property 是對(duì)象字段,column 是表字段。

@Select("SELECT * FROM user WHERE id = #{id}")
@Results({
 @Result(property="id", column="id"),
 @Result(property="name", column="name"), 
 @Result(property="age", column="age"), 
 @Result(property="remark", column="remark"), 
})
public User getUserById(@Param(value = "id") long id);

【4】大于 ( > ) 查詢

在SQL 語句中,直接寫作 > ,但在 xml 中,大于通常用轉(zhuǎn)義 &gt; 替代 ( xml 寫法介紹詳見 6.2)。

@Select("SELECT * FROM user WHERE age > #{age}")
public List<User> getUserList(@Param(value = "age") Integer age);

【5】小于 ( < ) 查詢

在SQL 語句中,直接寫作 < ,但在 xml 中,小于通常用轉(zhuǎn)義 &lt; 替代  ( xml 寫法介紹詳見 6.2)。

@Select("SELECT * FROM user WHERE age < #{age}")
public List<User> getUserList(@Param(value = "age") Integer age);

【6】IN 關(guān)鍵字查詢

(6.1)帶 IN 的子查詢

@Select("SELECT * FROM user WHERE id IN (SELECT id FROM user WHERE name = #{name})")
public List<User> getUserList(@Param(value = "name") String name);

(6.2)帶 IN 的集合查詢

List 集合,Set集合,數(shù)組 都適用。

注意:@Select({"<script>", "xx1", "xx2", "</script>"}) 這種寫法為 xml 方式寫法。所有 SQL 都在 <script> </script> 這對(duì)標(biāo)簽之中,標(biāo)簽之外是一對(duì)大括號(hào),<script> 標(biāo)簽內(nèi)的所有參數(shù)在最后執(zhí)行 SQL 的時(shí)候會(huì)自動(dòng)拼接,如這里為 xx1xx2,以此類推。 <script> 標(biāo)簽內(nèi)還可以內(nèi)嵌標(biāo)簽,比如下面里的 <foreach>,標(biāo)簽內(nèi)所有引號(hào)都為單引號(hào)。

@Select({"<script>", "SELECT * FROM user WHERE id IN ", 
 "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>", "</script>"})
public List<User> getUserList(@Param(value = "ids") List<Long> ids);

在 Postgrelsql 中,如果邏輯SQL中的 IN 和 ANY 的語義相同,那么盡量用 ANY,這樣會(huì)更加效率。如:

@Select("SELECT * FROM user WHERE id = ANY(#{ids}::integer[])")
public List<SubOrderPO> getUserList(@Param(value = "ids") Integer[] ids);

【7】LIKE 關(guān)鍵字查詢

@Select("SELECT * FROM user WHERE name LIKE concat('%', #{name}, '%') ")
public List<User> getUserList(@Param(value = "name") String name);

【8】時(shí)間查詢

(8.1)Date 類型:直接傳入進(jìn)行比較

@Select("SELECT * FROM user WHERE create_time > #{createTime}")
public List<User> test(@Param(value = "createTime") Date createTime);

(8.2)String 類型:需要將其轉(zhuǎn)化( 時(shí)間精度可以按自己需要裁取 )

Mysql :STR_TO_DATE('2008-08-08 08:08:08', '%Y-%m-%d %H:%i:%s')

Postgrelsql :to_timestamp('2008-08-08 08:08:08','yyyy-MM-dd hh24:mi:ss')

Oracle : to_date( '2008-08-08 08:08:08' , 'yyyy-MM-dd HH24:mi:ss' )

如 Mysql 寫法:

@Select("SELECT * FROM user WHERE create_time > STR_TO_DATE(#{createTime}, '%Y-%m-%d %H:%i:%s')")
public List<User> test(@Param(value = "createTime") String createTime);

【9】高級(jí)查詢( 動(dòng)態(tài)SQL )

 注意:【&gt;】是大于(>)的轉(zhuǎn)義,【&lt;】 是小于(<)的轉(zhuǎn)義

@Select({"<script>", "SELECT * FROM user ","<where>",
 "<if test = 'name != null' >", " AND name LIKE concat('%', #{name}, '%') ", "</if>", 
 "<if test = 'age != null and age != 0' >", " AND age &lt; #{age} ", "</if>", 
 "</where>", "</script>"})
public List<User> getUserList(@Param(value = "name") String name, @Param(value = "age") Integer age);

【10】修改對(duì)象

@Update("UPDATE user SET name = #{name} WHERE id = #{id}")
public void update(@Param(value = "id") Long id, @Param(value = "name") String name);

【11】刪除對(duì)象

@Delete("Delete FROM user WHERE id = #{id}")
public void delete(@Param(value = "id") Long id);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

汤原县| 石首市| 霍邱县| 天水市| 龙胜| 辽阳市| 博乐市| 永修县| 新丰县| 区。| 怀仁县| 颍上县| 新干县| 宁阳县| 英山县| 洛宁县| 苍南县| 苏尼特左旗| 荆门市| 屏南县| 灌南县| 肇源县| 天镇县| 富源县| 英德市| 如东县| 武定县| 泰和县| 聂荣县| 含山县| 千阳县| 梁山县| 观塘区| 竹溪县| 若尔盖县| 黎川县| 黔东| 枣阳市| 洛隆县| 涞源县| 扶沟县|