关于Mybatis自动生成的Custom类

一、Customer

自动生成的Customer类是由数据库表与表之间的关系(一对一、一对多、多对多)来决定的,这样的话会方便我们开发过程中返回需要的数据,即是在原基础的扩展类,这些类一般是继承自原始的类的,看来mybatis官方也是支持这种写法的,试想一下,如果在原基础改的话,后来需求变了,再来改实体类是一件多么痛苦的事情。

实例:
1.这里准备了两张表,userlogin(用户登录)和role(角色)表
用户表
角色表
他们之间是一对一的关系,即一个用户只能拥有一个角色,user的外键为roel,对应role的roleID
2.这时用了mybaits自动插件就会生成UserLogin和UserLoginCustomer类

public class Userlogin {
    private Integer userid;

    private String username;

    private String password;

    private Integer role;

    setter/getter
public class UserloginCustom extends Userlogin {

    private Role role_ob;

    setter/getter

这样如果需要查询用户的角色名
就可以写如下的Mapper resultMap:

    <resultMap id="UserloginResultMap" type="UserloginCustom">
        <id column="userID" property="userid"></id>

        <result column="userName" property="username" />
        <result column="password" property="password" />
        <result column="role" property="role" />

        <!--对象关联查询-->
        <association property="role_ob" javaType="Role">
            <id column="roleID" property="roleid"/>
            <result column="roleName"   property="rolename"/>
            <result column="permissions" property="permissions"/>
        </association>

    </resultMap>

对应的sql语句如下:

    <select id="findOne" parameterType="String" resultMap="UserloginResultMap">
        SELECT
          userlogin.*,
          role.*,
        FROM
          userlogin,
          role
        WHERE
          userlogin.role = role.roleID
    </select>

猜你喜欢

转载自blog.csdn.net/cijiancao/article/details/81014016