1.注解的使用规范
- @Target, 表示当前注解作用的位置
- @Retention, 保留策略, 在什么时间段生效
- @Document, 注解将出现在javadoc中
- @Inherited, 可以被子类继承
- 使用注解需要先导包: import
- 语法: @注解名(属性=值, …)
- 简单类型: 字符串, 数值, Class…
- 数组类型: 属性={值1, 值2, …}
- 对象类型: 属性=@注解(属性=值, …)
- 大部分注解有一个默认属性, 叫value
- 当属性只出现一个, 并且是默认属性时, 可以省略属性名, 直接写值
- 如果数组的元素只有一个值, 可以省略{}
2.MyBatis中常用的注解
- 简单的crud
public interface UserMapper {
//查询
@Select("select * from user where id=#{id}")
User selectUser(int id);
//查询全部
@Select("select * from user")
List<User> selectUserList();
//增加数据
@Insert("insert into user (name) values(#{name})")
boolean insertUser(String name);
//修改用户
@Update("update user set name=#{name} where id=#{id}")
boolean updateUser(@Param("name") String name,@Param("id") int id);
//删除用户
@Delete("delete from user where id=#{id}")
boolean deleteUser(int id);
}
- 一对一注解
@Select("select * from user")
@Results({
@Result(id = true,property = "id",column = "id"),//id=true 对应于主键
@Result(property = "uid",column = "uid"),
@Result(property = "user",column = "uid",javaType = User.class,
one = @One(select = "com.example.dao.UserDao.findUserByid",fetchType = FetchType.DEFAULT))
//user 对应实体类中一对一的实体类名字,uid表示通过uid外键查询User,JavaType表示查询结果
//映射成User类型对象,one=表示一对xx fetchType.default默认是立即加载全部查询,使用lazy懒加载需要才查询
})
List<User> selectUserList();
- 一对多注解
@Select("select * from user")
@Results({
@Result(id = true,property = "id",column = "id"),//id=true 对应于主键
@Result(property = "uid",column = "uid"),
@Result(property = "user",column = "uid",javaType = User.class,
many = @Many(select = "com.example.dao.UserDao.findUserByid",fetchType = FetchType.DEFAULT))
//user 对应实体类中一对一的实体类名字,uid表示通过uid外键查询User,JavaType表示查询结果
//映射成User类型对象,one=表示一对xx fetchType.default默认是立即加载全部查询,使用lazy懒加载需要才查询
})
List<User> selectUserList();