mybatis 注解开发 多表查询

1.结果集映射

点击查看代码
    //05_1 多表查询 结果集映射 id 为true 代表是主键
    @Select("select userid as id ,username as name,usersex as sex from users where userid = #{userid}")
    @Results(id = "usersMapper", value = {
            @Result(id = true, property = "userid", column = "id"),
            @Result(property = "username", column = "name"),
            @Result(property = "usersex", column = "sex")
    })
    Users selectUsersByIdMapper(Users users);

在 Mybatis 的注解开发中对于多表查询只支持 N+1 次查询,不支持连接查询。

2.一对一
2.1 创建pojo对象Roles
2.2 创建RolesMapper接口
2.2.1 创建方法

点击查看代码
//01 查询
    @Select("select * from Roles where roleid = #{userid}")
    Roles selectRolesByUserId(int userid);
2.3 修改 users对象 2.4 创建usersMapper接口方法
点击查看代码
//05_2 多表查询 一对一
    @Select("select * from users where userid=#{userid}")
    @Results(id = "usersAndRolesMapper", value = {
            @Result(id = true, property = "userid", column = "userid"),
            @Result(property = "username", column = "username"),
            @Result(property = "usersex", column = "usersex"),
            @Result(property = "roles", column = "userid", one = @One(select = "com.bjsxt.mapper.RolesMapper.selectRolesByUserId",fetchType = FetchType.LAZY))
    })
    Users selectUsersAndRolesByUserId(int userid);
2.5 修改全局配置文件
点击查看代码
<!--    开启延迟加载 N+1 -->
    <settings>
        <setting name="lazyLoadTriggerMethods" value=""/>
    </settings>

3.一对多
3.1创建 orders 对象
3.2创建order 接口
3.2.1 创建方法

点击查看代码
    //01
    @Select("select * from orders where user_id=#{userid}")
    List<Orders> selectOrdersByUserId(int userid);
3.3创建usermapper的方法
点击查看代码
//05_3 多表查询 一对多
    @Select("select * from users where userid=#{userid}")
    @Results(id = "usersAndOrdersMapper", value = {
            @Result(id = true, property = "userid", column = "userid"),
            @Result(property = "username", column = "username"),
            @Result(property = "usersex", column = "usersex"),
            @Result(property = "orders", column = "userid", many = @Many(select = "com.bjsxt.mapper.OrdersMapper.selectOrdersByUserId",fetchType = FetchType.LAZY))
    })
    Users selectUsersAndOrdersByUserId(int userid);
posted @ 2021-12-05 18:40  风的指引  阅读(152)  评论(0)    收藏  举报