MyBatis中的常用注解


在MyBatis中,一些SQL語句例如(select * from 表名;delete from 表名)等等,這些SQL語句比較簡單,沒有那些復雜的關聯關系,但是在不用注解的情況下,要執行這些方法的話就要從DAO層,Mapper映射文件兩個方面進行實現,這些步驟在我們MyBatis中可以使用注解進行簡化;接下來就介紹我們常用的增刪改查標簽

@Insert

@Update

@Delete

@Select

上面的這些注解中的每一個代表了執行的真實SQL。它們每一個都使用字符串數組(或單獨的字符串)。如果傳遞的是字符串數組,它們由每個分隔它們的單獨空間串聯起來。

這幾個注解的使用方法都是一樣的,把注解聲明在DAO層的方法上面

PS(這些注解都是MyBatis提供的,只需要引入MyBatis的依賴)

依賴

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

 

先創建一個接口,並在接口里面聲明一個方法

public interface ITestDao {
    //獲取所有的用戶
    @Select(" SELECT * FROM smbms_user")
     List<User> getUser();
}

這種情況可以不使用Mapper映射文件,但是需要在MyBatis的核心配置文件中引入相應的接口文件(我的接口在com.yjc.dao包下),這個操作代表掃描該包下的所有文件

    <mappers>
        <package name="com.yjc.dao"/>
    </mappers>

接下來直接測試

public class Test1 {
    public static void main(String[] args) {
        SqlSession session = SqlSessionUtils.getSession();
        ITestDao mapper = session.getMapper(ITestDao.class);
        List<User> user = mapper.getUser();
        for (User user1: user ) {
            System.out.println(user1);
        }
    }
}

輸出結果如下,

 

 查出了所有的用戶信息,

注解里面一般寫的都是單表的簡單查詢,需要進行關聯查詢的時候,還是需要將SQL的寫在Mapper映射文件

當然MyBatis也給我們提供了進行關系映射相應的注解

@Results

在列和屬性或字段之間的單獨結果映 射。屬 性 :id,column, property, javaType ,jdbcType ,type Handler, one,many。id 屬性是一個布爾值,表 示了應 該被用於比較(和在 XML 映射 中的<id>相 似)的屬性。one 屬性是單 獨 的 聯 系, 和 <association> 相 似 , 而 many 屬 性 是 對 集 合 而 言 的 , 和 <collection>相 似。 它們這樣命名是為了 避免名稱沖突

|//注解方式配置resultMap手動映射
@Results(id = "userMap" ,value = {
@Result(id = true, column = "id", property = "id"),
@Result(column = "userName" ,property = "user")
)
//使用注解可以不用小配置文件 但是
在實際開發必須有小配置
@Select("select * from smbms_ user where userName like concat('%',#{name},'%') and gender=#{gender}" )
public List<SmbmsUser> getUserByNameAndGender(@Param( "name") String name, @Param( ”gender") Integer gender); 

@Result注解默認只對他下面的第一個方法才能生效,可以使用@ResultMap來進行手動引入

@ResultMap( "userMap")_ Resul ts的ID值
@Select("select * from smbms_ user")
public List<SmbmsUser> getAllUser();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM