Select 映射查詢的語句
Selectrovider Select語句的動態SQL映射。允許指定一個類型和一個方法在執行時返回運行的查詢語句。有兩個屬性:type和method,type屬性是類的完全限定名,method是該類中的哪個方法名
Insert 插入語句
InsertProvider
update
updateProvider
delete
deleteProvider
Result 在列和屬性之間的單獨結果映射。屬性包括:id,column,property,javaType,jdbcType,type Handler,one,many。id屬性是一個布爾值,表示是否被用於主鍵映射。one屬性是單獨的聯系,many屬性是對集合而言的
Results 多個結果映射(Result)列表
Options 提供配置選項的附加值,他們通常在映射語句上作為附加功能配置出現
One 復雜類型的單獨屬性值映射。必須指定select屬性,表示已映射的sql語句的完全限定名
Many 復雜類型的集合屬性映射。必須指定select屬性,表示已映射的sql語句的完全限定名
Param 當映射器方法需要多個參數時,這個注解可以被應用於映射器參數來給每一個參數取一個名字。否則,多參數將會以它們的順序位置和sql語句中的表達式進行映射,這是默認的。使用@Param("id"),sql中參數應該被命名為#{id}
@Insert("insert into user(name,sex,age) values(#{name},#{sex}),#{age}")
@Options(useGenerateedKeys=true,keyProperty="id")//使用數據庫自動增長的主鍵,該操作需要底層數據庫的支持,keyProperty="id" 表示將插入數據生成的主鍵設置到user對象的id當中
int saveUser(User user);
@Delete("delete frome user where id = #{id}")
int removeUser(@Param("id") Integer id);@Param("id")表示給該注解后邊的變量取一個參數名稱,對應@Delete中的#{id}
@Update("update user set name = #{name}, sex = #{sex},age = #{age} where id = #{id}")
void modifyUser(User user);
@Select("select * from user where id = #{id}")
@Results({
@Result(id=true,column="id",property="id"),@Result(column="name",property="name"),@Result(column="sex",property="sex"),@Result(column="age",property="age")如果列和屬性相同,則可以省略@Result注解,MyBatis會自動映射
})
User selectUserById(Integer id);
@Select("select * from user")
List<User> getAllUsers();
一人一個身份證
@Select("select * from user where id = #{id}")
@Results({
@Result(id=true,column="id",property="id"),
@Result(column="name",property="name"),
@Result(column="sex",property="sex"),
@Result(column="age",property="age"),
@Result(column="card_id",property="card",
one=@One(select="com.mapper.UserMapper.selectCardById"),fetchType=FetchType.EAGER)
)
})
column="card_id",property="card"表示User的card屬性對應表里的card_id列,one表示一個一對一關聯關系,fetchType表示查詢類型是立即加載(EAGER)還是懶加載(LAZY)
many=@Many(select="",fetchType="")
屬性是一個集合,一對多