天天看点

Mybatis 自定义SQL 多表关联查询

Habnate  只要把实体类做好   他会自动多表关联的查询的

但是Mybatis不行   他不会多表关联查询    需要写自定义SQL语句  如下

select * from product p,user u where p.user_id=u.id and u.id = 3

prodect这个表和 user 这个表关联查询    id相等 并且返回  id= 3 的值 

select p.*,u.name from product p,user u where p.user_id=u.id and u.id = 3

这样的查询结果 是p的所有   返回u的名字

public interface UserMapper extends BaseMapper<User> {//这里的泛型类是对应的我们数据库的实体类
//这个接口的实例是动态生成的  动态代理的方式生成的

    //它自带的方法满足不了多表关联的查询  需要自己写方法了
    //如果下面这个语句不加userName  最后  在Test中输出的userName就是null了
    //加上userName的作用是  把u.name取出来  给他叫成了userName的名字  这样就对应起来了
    @Select("select p.*,u.name userName from product p,user u where p.user_id=u.id and u.id = #{id}")
    List<ProductVO> productList(Integer id);
}
 
           

继续阅读