一对一表
被外键关联的表,使用的sql语句 对应着的成员对象中的成员变量对象 的id名 来查询
//根据id查询
@Select("SELECT * FROM person WHERE id=#{id}")
public abstract Person selectById(Integer id);
设置有外键的一方 ,通过外键 用 @Results 注解 将与代码关联的成员对象绑定 ,在 @Results 注解 通过他的 子注解 @Result 来 将对应的 数据表的列名 与 代码对象 的 成员变量 关联起来 ,在一对一表的情况下 是 外键列名 就要 用成员对象进行关联
property = “p”, 是 数据表外键 对应的代码对象中 成员对象的变量名
javaType = Person.class, 是 数据表外键 对应的代码对象中 成员对象的数据类型
column = “pid”, 是 数据表中 设置了关联外键的列名 也就是 字段
@One 是 表示 一对一表 的 sql语句 select = 的是 外键 查询方法 需要关联的 接口 该接口的 全类名+方法名
//查询全部
@Select("SELECT * FROM card")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "number",property = "number"),
@Result(
property = "p", // 被包含对象的变量名
javaType = Person.class, // 被包含对象的实际数据类型
column = "pid", // 根据查询出的card表中的pid字段来查询person表
/*
one、@One 一对一固定写法
select属性:指定调用哪个接口中的哪个方法
*/
one = @One(select = "com.itheima.one_to_one.PersonMapper.selectById")
)
})
public abstract List<Card> selectAll();
一对多表
被外键关联的表,使用的sql语句 根据外键 对应着的成员对象中的成员变量对象 的id名 来查询
//根据cid查询student表
@Select("SELECT * FROM student WHERE cid=#{cid}")
public abstract List<Student> selectByCid(Integer cid);
设置有外键的一方 ,通过外键 用 @Results 注解 将与代码关联的成员对象绑定 ,在 @Results 注解 通过他的 子注解 @Result 来 将对应的 数据表的列名 与 代码对象 的 成员变量 关联起来 ,在一对一表的情况下 是 外键列名 就要 用成员对象进行关联
property = “p”, 是 数据表外键 对应的代码对象中 成员对象的变量名
javaType = Person.class, 是 数据表外键 对应的代码对象中 成员对象的数据类型
column = “id”, 是 数据表中 设置了关联外键的列名 的成员对象 id名 也就是 字段
@Many 是 表示 一对多表 的 sql语句 select = 的是 外键 查询方法 需要关联的 接口 该接口的 全类名+方法名
//查询全部
@Select("SELECT * FROM classes")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "name",property = "name"),
@Result(
property = "students", // 被包含对象的变量名
javaType = List.class, // 被包含对象的实际数据类型
column = "id", // 根据查询出的classes表的id字段来查询student表
/*
many、@Many 一对多查询的固定写法
select属性:指定调用哪个接口中的哪个查询方法
*/
many = @Many(select = "com.itheima.one_to_many.StudentMapper.selectByCid")
)
})
public abstract List<Classes> selectAll();
多对多表
被外键关联的表,使用的sql语句 对应着的成员对象中的成员变量对象 的id名 来查询
//根据学生id查询所选课程
@Select("SELECT c.id,c.name FROM stu_cr sc,course c WHERE sc.cid=c.id AND sc.sid=#{id}")
public abstract List<Course> selectBySid(Integer id);
设置有外键的一方 ,通过外键 用 @Results 注解 将与代码关联的成员对象绑定 ,在 @Results 注解 通过他的 子注解 @Result 来 将对应的 数据表的列名 与 代码对象 的 成员变量 关联起来 ,在一对一表的情况下 是 外键列名 就要 用成员对象进行关联
property = “p”, 是 数据表外键 对应的代码对象中 成员对象的变量名
javaType = Person.class, 是 数据表外键 对应的代码对象中 成员对象的数据类型
column = “id”, 是 数据表中 设置了关联外键的列名 的成员对象 id名 也就是 字段
@Many 是 表示 一对多表 的 sql语句 select = 的是 外键 查询方法 需要关联的 接口 该接口的 全类名+方法名
//查询全部
@Select("SELECT DISTINCT s.id,s.name,s.age FROM student s,stu_cr sc WHERE sc.sid=s.id")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "name",property = "name"),
@Result(column = "age",property = "age"),
@Result(
property = "courses", // 被包含对象的变量名
javaType = List.class, // 被包含对象的实际数据类型
column = "id", // 根据查询出student表的id来作为关联条件,去查询中间表和课程表
/*
many、@Many 一对多查询的固定写法
select属性:指定调用哪个接口中的哪个查询方法
*/
many = @Many(select = "com.itheima.many_to_many.CourseMapper.selectBySid")
)
})
public abstract List<Student> selectAll();