@Results的基本用法。当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。
@One的用法。当我们需要通过查询到的一个字段值作为参数,去执行另外一个方法来查询关联的内容,而且两者是一对一关系时,可以使用@One注解来便捷的实现。比如当我们需要查询学生信息以及其所属班级信息时,需要以查询到的class_id为参数,来执行ClassesMapper中的selectById方法,从而获得学生所属的班级信息。
@Many的用法。与@One类似,只不过如果使用@One查询到的结果是多行,会抛出TooManyResultException异常,这种时候应该使用的是@Many注解,实现一对多的查询。
@ResultMap的用法。当这段@Results代码需要在多个方法用到时,为了提高代码复用性,我们可以为这个@Results注解设置id,然后使用@ResultMap注解来复用这段代码。
新建一个OrderDao2接口
package com.mu.dao;
import com.mu.pojo.Order;
import com.mu.pojo.User;
import org.apache.ibatis.annotations.*;
public interface OrderDao2 {
//根据用户id查询用户信息
@Select("select * from user where id =#{id};")
User selectByuserid(int id);
//根据订单编号 查询订单的信息
@Select("select * from t_order where number=#{number};")
Order selectBynumber(String number);
//根据user_id 查询订单的信息
@Select("select * from t_order where user_id=#{userid};")
Order selectByuserid2(int userid);
//一对一,根据订单编号 查询用户的信息
@Results({
@Result(property = "oid",column ="oid",id = true ),
@Result(property =