在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();
