MyBatis学习笔记二(注解开发)
MyBatis的注解实现复杂映射开发

@Insert: 实现新增
@Update: 实现更新
@Delete: 实现删除
@Select: 实现查询
@Result: 实现结果集封装
@Results: 可以与@Result一起使用,封装多个结果集
@One: 实现一对一结果集封装
@Many: 实现一对多结果集封装
使用注解配置mapper
public interface OrderMapper {
@Select("select * from orders")
@Results({
@Result(id=true,property = "id",column = "id"),
@Result(property = "ordertime",column = "ordertime"),
@Result(property = "total",column = "total"),
@Result(property = "user",column = "uid",
javaType = User.class,
one = @One(select ="com.lagou.mapper.UserMapper.findById"))
})
List<Order> findAll();
}
public interface UserMapper {
@Select("select * from user where id=#{id}")
User findById(int id);
}
测试结果
@Test
public void testSelectOrderAndUser() {
List<Order> all = orderMapper.findAll(); for(Order order : all) {
System.out.println(order);
}
}

注解增删改查
public interface IUserMapper {
//查询所有用户、同时查询每个用户关联的订单信息
@Select("select * from user")
@Results({
@Result(property = "id",column = "id"),
@Result(property = "username",column = "username"),
@Result(property = "orderList",column = "id",javaType = List.class,
many=@Many(select = "com.lagou.mapper.IOrderMapper.findOrderByUid"))
})
public List<User> findAll();
//查询所有用户、同时查询每个用户关联的角色信息
@Select("select * from user")
@Results({
@Result(property = "id",column = "id"),
@Result(property = "username",column = "username"),
@Result(property = "roleList",column = "id",javaType = List.class,
many = @Many(select = "com.lagou.mapper.IRoleMapper.findRoleByUid"))
})
public List<User> findAllUserAndRole();
//添加用户
@Insert("insert into user values(#{id},#{username})")
public void addUser(User user);
//更新用户
@Update("update user set username = #{username} where id = #{id}")
public void updateUser(User user);
//查询用户
@Select("select * from user")
public List<User> selectUser();
//删除用户
@Delete("delete from user where id = #{id}")
public void deleteUser(Integer id);
//根据id查询用户
@Options(useCache = true)
@Select({"select * from user where id = #{id}"})
public User findUserById(Integer id);
}

浙公网安备 33010602011771号