參考:https://mybatis.org/mybatis-3/zh/java-api.html
1.註解實現基本的curd:
UserMapper接口:
public interface UserMapper {
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
public void save(User user);
@Update("update user set username=#{username},password=#{password} where id=#{id}")
public void update(User user);
@Delete("delete from user where id=#{id}")
public void delete(int id);
@Select("select * from user where id=#{id}")
public User findById(int id);
@Select("select * from user")
public List<User> findAll();
}
sqlMapConfig.xml配置:
<!--加載映射關係-->
<mappers>
<!--指定接口所在的包-->
<package name="com.itheima.mapper"/>
</mappers>
2.註解實現複雜映射查詢
2.1 一對一的註解開發(查詢一個訂單,與此同時查詢出該訂單所屬的用戶)
OrderMapper接口:
public interface OrderMapper {
@Select("select *,o.id oid from orders o,user u where o.uid=u.id")
@Results({
@Result(column = "oid", property = "id"),
@Result(column = "ordertime", property = "ordertime"),
@Result(column = "total", property = "total"),
@Result(column = "uid", property = "user.id"),
@Result(column = "username", property = "user.username"),
@Result(column = "password", property = "user.password")
})
public List<Order> findAll();
}
或者:
public interface OrderMapper {
@Select("SELECT * FROM orders")
@Results({
@Result(column = "oid", property = "id"),
@Result(column = "ordertime", property = "ordertime"),
@Result(column = "total", property = "total"),
@Result(
property = "user", //要封裝的屬性名稱
column = "uid", // 根據哪個字段去查詢user表中的數據
javaType = User.class, //要封裝的實體類型
//select屬性 代表查詢哪個接口的方法獲得數據
one = @One(select = "com.itheima.mapper.UserMapper.findById")
)
})
public List<Order> findAll();
}
2.2 一對多的註解開發(查詢一個用戶,與此同時查詢出該用戶具有的訂單)
@Select("select * from user")
@Results({
@Result(id=true, column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "password", property = "password"),
@Result(
property = "orderList",
column = "id",
javaType = List.class,
many = @Many(select = "com.itheima.mapper.OrderMapper.findByUid")
)
}
)
public List<User> findUserAndOrderAll();
2.3 多對多的註解開發(查詢用戶同時查詢出該用戶的所有角色)
RoleMapper接口:
public interface RoleMapper {
@Select("SELECT * FROM user_role ur,role r WHERE ur.role_id=r.id AND ur.user_id=#{uid}")
public List<Role> findByUid(int uid);
}
UserMapper接口:
@Select("SELECT * FROM USER")
@Results({
@Result(id = true, column = "id", property = "id"),
@Result(id = true, column = "username", property = "username"),
@Result(id = true, column = "password", property = "password"),
@Result(
property = "roleList",
column = "id",
javaType = List.class,
many = @Many(select = "com.itheima.mapper.RoleMapper.findByUid")
)
})
public List<User> findUserAndRoleAll();