MyBatis的1V1、1VN、NVN关系(单向或双向)的实现?

一、首先,介绍一下什么是MyBatis?

 MyBatis是一个ORM(对象关系映射)框架,是一个可以自定义SQL、存储过程和高级映射的持久层框架。

二、关联关系是有方向的:单向和双向。单向即只有一端入口(A有B的对象或集合,而B没有A的对象或集合);双向即有两端入口(A有B的对象或集合,B也有A的对象或集合)。

三、1V1关系的实现(单向):

1、配置xml配置文件(mybatis-Config.xml):

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--配置log4j-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!--批量别名定义-->
    <typeAliases>
        <package name="com.zking"></package>
    </typeAliases>
    <!--jdbc数据连接池-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--配置映射文件-->
    <mappers>
        <!--1V1关系的配置文件-->
        <mapper resource="com/zking/mapper/PersonMapper.xml"></mapper>
        <!--1VN关系的配置文件-->
        <mapper resource="com/zking/mapper/NationMapper.xml"></mapper>
        <!--NVN关系的配置文件-->
        <mapper resource="com/zking/mapper/UserMapper.xml"></mapper>
        <mapper resource="com/zking/mapper/RoleMapper.xml"></mapper>
    </mappers>
</configuration>

2、Log4J的配置文件(log4j.properties):

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.zking.mapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3、创建主表(person )和从表(cord)的实体:

注意点:实体类名、属性名必须和数据库定义的表名、列名一致。

/**
 * 1V1关系的主表
 */
public class person implements Serializable {

    /**
     * 人的编号
     */
    private String pid;

    /**
     * 姓名
     */
    private String pname;

    /**
     * 性别
     */
    private String psex;

    /**
     * 年龄
     */
    private int page;

    /**
     * 卡的对象
     */
    private cord cord;

    /**
     * 无参构造方法
     */
    public person() {
    }

    /**
     * 有参构造方法
     *
     * @param pid
     * @param pname
     * @param psex
     * @param page
     * @param cord
     */
    public person(String pid, String pname, String psex, int page, com.zking.pojo.cord cord) {
        this.pid = pid;
        this.pname = pname;
        this.psex = psex;
        this.page = page;
        this.cord = cord;
    }


    /**
     * get和set方法
     *
     * @return
     */
    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getPsex() {
        return psex;
    }

    public void setPsex(String psex) {
        this.psex = psex;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public com.zking.pojo.cord getCord() {
        return cord;
    }

    public void setCord(com.zking.pojo.cord cord) {
        this.cord = cord;
    }

    @Override
    public String toString() {
        return "person{" +
                "pid='" + pid + '\'' +
                ", pname='" + pname + '\'' +
                ", psex='" + psex + '\'' +
                ", page=" + page +
                ", cord=" + cord +
                '}';
    }
}
/**
 * 1V1关系的从表
 */
public class cord implements Serializable {

    /**
     * 卡的编号
     */
    private String cid;

    /**
     * 卡号
     */
    private int cnumber;


    /**
     * 无参构造方法
     */
    public cord() {
    }

    /**
     * 有参构造方法
     *
     * @param cid
     * @param cnumber
     */
    public cord(String cid, int cnumber) {
        this.cid = cid;
        this.cnumber = cnumber;
    }

    /**
     * get和set方法
     *
     * @return
     */
    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }

    public int getCnumber() {
        return cnumber;
    }

    public void setCnumber(int cnumber) {
        this.cnumber = cnumber;
    }

    @Override
    public String toString() {
        return "cord{" +
                "cid='" + cid + '\'' +
                ", cnumber=" + cnumber +
                '}';
    }
}

4、创建接口类(IPersonMapper):

/**
 * 1V1关系的接口
 */
public interface IPersonMapper {

    public List<person> findPersonAndCordAll();

}

5、配置映射文件(PersonMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zking.mapper.IPersonMapper">

    <!--返回结果集合-->
    <resultMap id="getPersonAndCord" type="person">
        <!--主表信息-->
        <id column="pid" property="pid"></id>
        <result column="pname" property="pname"></result>
        <result column="psex" property="psex"></result>
        <result column="page" property="page"></result>
        <!--建立1V1的关系-->
        <association property="cord" javaType="cord">
            <!--从表信息-->
            <id column="cid" property="cid"></id>
            <result column="cnumber" property="cnumber"></result>
        </association>
    </resultMap>

    <select id="findPersonAndCordAll" resultMap="getPersonAndCord">
       SELECT p.`pid`,p.`pname`,p.`psex`,p.`page`,c.`cnumber`,c.`cid` FROM person p,cord c WHERE p.pid=c.cid
    </select>

</mapper>

6、1V1关系的测试类(PersonTest):

/**
 * 1V1关系的测试类
 */
public class PersonTest {

    SqlSession session = null;

    @Before
    public void before() {
        //加载 mybatis 配置文件
        InputStream inputStream = PersonTest.class.
                getClassLoader().getResourceAsStream("mybatis-Config.xml");
        //构建sqlSession的工厂
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //根据 sqlSessionFactory 产生 session
        session = sqlSessionFactory.openSession();
    }


    @Test
    public void findPersonAndCordAll() {
        IPersonMapper ipm = session.getMapper(IPersonMapper.class);
        System.out.println(ipm.findPersonAndCordAll());
    }

    @After
    public void after() {
        //关闭session
        session.close();
    }

}

7、1V1关系的测试输出结果:

DEBUG [main] - ==>  Preparing: SELECT p.`pid`,p.`pname`,p.`psex`,p.`page`,c.`cnumber`,c.`cid` FROM person p,cord c WHERE p.pid=c.cid 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: pid, pname, psex, page, cnumber, cid
TRACE [main] - <==        Row: 15b62d15-b8c5-11e8-a42a-80fa5b5015f0, 陈超, 男, 17, 111, 15b62d15-b8c5-11e8-a42a-80fa5b5015f0
TRACE [main] - <==        Row: b0450efa-de57-11e8-aba8-80fa5b5015f0, 成成, 男, 19, 222, b0450efa-de57-11e8-aba8-80fa5b5015f0
DEBUG [main] - <==      Total: 2
[person{pid='15b62d15-b8c5-11e8-a42a-80fa5b5015f0', pname='陈超', psex='男', page=17, cord=cord{cid='15b62d15-b8c5-11e8-a42a-80fa5b5015f0', cnumber=111}}, person{pid='b0450efa-de57-11e8-aba8-80fa5b5015f0', pname='成成', psex='男', page=19, cord=cord{cid='b0450efa-de57-11e8-aba8-80fa5b5015f0', cnumber=222}}]

三、1VN关系的实现(单向):

1、2步跟1V1关系一致。

3、创建主表(nation)和从表(province)的实体:

注意点:实体类名、属性名必须和数据库定义的表名、列名一致。

/**
 * 1VN关系的主表
 */
public class nation implements Serializable {

    /**
     * 国家编号
     */
    private String nid;

    /**
     * 国家名称
     */
    private String nname;

    /**
     * 省份集合
     */
    private List<province> provinceList;

    public nation() {
    }

    public nation(String nid, String nname, List<province> provinceList) {
        this.nid = nid;
        this.nname = nname;
        this.provinceList = provinceList;
    }

    public String getNid() {
        return nid;
    }

    public void setNid(String nid) {
        this.nid = nid;
    }

    public String getNname() {
        return nname;
    }

    public void setNname(String nname) {
        this.nname = nname;
    }

    public List<province> getProvinceList() {
        return provinceList;
    }

    public void setProvinceList(List<province> provinceList) {
        this.provinceList = provinceList;
    }

    @Override
    public String toString() {
        return "nation{" +
                "nid='" + nid + '\'' +
                ", nname='" + nname + '\'' +
                ", provinceList=" + provinceList +
                '}';
    }
}
/**
 * 1VN关系的从表
 */
public class province implements Serializable {

    /**
     * 省份编号
     */
    private String pid;

    /**
     * 省份名称
     */
    private String pname;

    /**
     * 国家编号
     */
    private String nid;

    /**
     * 国家对象
     */
    private nation nation;

    public province() {
    }

    public province(String pid, String pname, String nid, com.zking.pojo.nation nation) {
        this.pid = pid;
        this.pname = pname;
        this.nid = nid;
        this.nation = nation;
    }

    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getNid() {
        return nid;
    }

    public void setNid(String nid) {
        this.nid = nid;
    }

    public com.zking.pojo.nation getNation() {
        return nation;
    }

    @Override
    public String toString() {
        return "province{" +
                "pid='" + pid + '\'' +
                ", pname='" + pname + '\'' +
                ", nid='" + nid + '\'' +
                ", nation=" + nation +
                '}';
    }

    public void setNation(com.zking.pojo.nation nation) {
        this.nation = nation;
    }
}

4、创建接口类(INationMapper):

/**
 * 1VN关系的接口
 */
public interface INationMapper {

     public List<nation> findNationAndProvince();

}

5、配置映射文件(NationMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zking.mapper.INationMapper">

    <!--返回结果集合-->
    <resultMap id="getNationAndProvinceList" type="nation">
        <!--主表信息-->
        <id column="nid" property="nid"></id>
        <result column="nname" property="nname"></result>
        <!--建立1VN的关系-->
        <collection property="provinceList" ofType="province">
            <!--从表信息-->
            <id property="pid" column="pid"></id>
            <result property="pname" column="pname"></result>
            <result property="nid" column="nid"></result>
        </collection>
    </resultMap>

    <select id="findNationAndProvince" resultMap="getNationAndProvinceList">
          SELECT n.`nid`,n.`nname`,p.`pid`,p.`pname`,p.`nid` FROM nation n,province p WHERE n.nid=p.nid
    </select>

</mapper>

6、1VN关系的测试类(NationTest):

/**
 * 1VN关系的测试类
 */
public class NationTest {

    SqlSession session = null;

    @Before
    public void before() {
        //加载 mybatis 配置文件
        InputStream inputStream = PersonTest.class.
                getClassLoader().getResourceAsStream("mybatis-Config.xml");
        //构建sqlSession的工厂
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //根据 sqlSessionFactory 产生 session
        session = sqlSessionFactory.openSession();
    }


    @Test
    public void findNationAndProvince() {
        INationMapper inm = session.getMapper(INationMapper.class);
         System.out.println(inm.findNationAndProvince());
    }

    @After
    public void after() {
        //关闭session
        session.close();
    }

}

7、1VN关系的测试输出结果:

TRACE [main] - <==        Row: befa7666-b8c2-11e8-a42a-80fa5b5015f0, China, befe676c-b8c2-11e8-a42a-80fa5b5015f0, 湖北, befa7666-b8c2-11e8-a42a-80fa5b5015f0
TRACE [main] - <==        Row: befa7666-b8c2-11e8-a42a-80fa5b5015f0, China, befea6fd-b8c2-11e8-a42a-80fa5b5015f0, 湖南, befa7666-b8c2-11e8-a42a-80fa5b5015f0
TRACE [main] - <==        Row: d45a4506-de61-11e8-aba8-80fa5b5015f0, America, f256472a-de61-11e8-aba8-80fa5b5015f0, 洛杉矶, d45a4506-de61-11e8-aba8-80fa5b5015f0
DEBUG [main] - <==      Total: 4
[nation{nid='d45a4506-de61-11e8-aba8-80fa5b5015f0', nname='America', provinceList=[province{pid='0ac574fa-de62-11e8-aba8-80fa5b5015f0', pname='哥伦布', nid='d45a4506-de61-11e8-aba8-80fa5b5015f0', nation=null}, province{pid='f256472a-de61-11e8-aba8-80fa5b5015f0', pname='洛杉矶', nid='d45a4506-de61-11e8-aba8-80fa5b5015f0', nation=null}]}, nation{nid='befa7666-b8c2-11e8-a42a-80fa5b5015f0', nname='China', provinceList=[province{pid='befe676c-b8c2-11e8-a42a-80fa5b5015f0', pname='湖北', nid='befa7666-b8c2-11e8-a42a-80fa5b5015f0', nation=null}, province{pid='befea6fd-b8c2-11e8-a42a-80fa5b5015f0', pname='湖南', nid='befa7666-b8c2-11e8-a42a-80fa5b5015f0', nation=null}]}]

四、NVN关系的实现(双向):

1、2步跟1V1关系一致。

3、创建主表(t_user)、中间表(t_userrole)、从表(t_role)的实体:

注意点:实体类名、属性名必须和数据库定义的表名、列名一致。

/**
 * NVN关系的主表
 */
public class t_user implements Serializable {
    /**
     * 用户编号
     */
    private String user_id;

    /**
     * 用户名称
     */
    private String user_name;

    /**
     * 用户密码
     */
    private String user_pwd;

    /**
     * 用户类型
     */
    private int user_type;

    /**
     * 角色集合z
     */
    private List<t_role> roleList;

    public t_user() {
    }

    public t_user(String user_id, String user_name, String user_pwd, int user_type, List<t_role> roleList) {
        this.user_id = user_id;
        this.user_name = user_name;
        this.user_pwd = user_pwd;
        this.user_type = user_type;
        this.roleList = roleList;
    }

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_pwd() {
        return user_pwd;
    }

    public void setUser_pwd(String user_pwd) {
        this.user_pwd = user_pwd;
    }

    public int getUser_type() {
        return user_type;
    }

    public void setUser_type(int user_type) {
        this.user_type = user_type;
    }

    public List<t_role> getRoleList() {
        return roleList;
    }

    public void setRoleList(List<t_role> roleList) {
        this.roleList = roleList;
    }

    @Override
    public String toString() {
        return "t_user{" +
                "user_id='" + user_id + '\'' +
                ", user_name='" + user_name + '\'' +
                ", user_pwd='" + user_pwd + '\'' +
                ", user_type=" + user_type +
                ", roleList=" + roleList +
                '}';
    }
}
/**
 * NVN关系的中间表
 */
public class t_userrole implements Serializable {

    /**
     * 中间表编号
     */
    private String urid;

    /**
     * 用户对象
     */
    private t_user t_user;

    /**
     * 角色对象
     */
    private t_role t_role;

    public t_userrole() {
    }

    public t_userrole(String urid, com.zking.pojo.t_user t_user, com.zking.pojo.t_role t_role) {
        this.urid = urid;
        this.t_user = t_user;
        this.t_role = t_role;
    }

    public String getUrid() {
        return urid;
    }

    public void setUrid(String urid) {
        this.urid = urid;
    }

    public com.zking.pojo.t_user getT_user() {
        return t_user;
    }

    public void setT_user(com.zking.pojo.t_user t_user) {
        this.t_user = t_user;
    }

    public com.zking.pojo.t_role getT_role() {
        return t_role;
    }

    public void setT_role(com.zking.pojo.t_role t_role) {
        this.t_role = t_role;
    }

    @Override
    public String toString() {
        return "t_userrole{" +
                "urid='" + urid + '\'' +
                ", t_user=" + t_user +
                ", t_role=" + t_role +
                '}';
    }
}
/**
 * NVN关系的从表
 */
public class t_role implements Serializable {

    /**
     * 角色编号
     */
    private String rid;

    /**
     * 角色名称
     */
    private String rname;

    /**
     * 角色等级
     */
    private String rclass;

    /**
     * 用户集合
     */
    private List<t_user> userList;

    public t_role() {
    }

    public t_role(String rid, String rname, String rclass, List<t_user> userList) {
        this.rid = rid;
        this.rname = rname;
        this.rclass = rclass;
        this.userList = userList;
    }

    public String getRid() {
        return rid;
    }

    public void setRid(String rid) {
        this.rid = rid;
    }

    public String getRname() {
        return rname;
    }

    public void setRname(String rname) {
        this.rname = rname;
    }

    public String getRclass() {
        return rclass;
    }

    public void setRclass(String rclass) {
        this.rclass = rclass;
    }

    public List<t_user> getUserList() {
        return userList;
    }

    public void setUserList(List<t_user> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "t_role{" +
                "rid='" + rid + '\'' +
                ", rname='" + rname + '\'' +
                ", rclass='" + rclass + '\'' +
                ", userList=" + userList +
                '}';
    }
}

4、创建用用户表接口类(IUserMapper):

/**
 * NVN关系的用户表接口
 */
public interface IUserMapper {

    public List<t_user> findUserAndRoleAllList();

}

创建用角色表接口类(IRoleMapper):

/**
 * NVN关系的角色表接口
 */
public interface IRoleMapper {

    public List<t_role> findRoleAndUserAllList();

}

5、配置用户表的映射文件(UserMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zking.mapper.IUserMapper">

    <!--返回结果集合-->
    <resultMap id="getUserAndRoleAllList" type="t_user">
        <!--用户表信息-->
        <id property="user_id" column="user_id"></id>
        <result property="user_name" column="user_name"></result>
        <result property="user_pwd" column="user_pwd"></result>
        <!--建立NVN的关系-->
        <collection property="roleList" ofType="t_role">
            <!--角色表信息-->
            <id property="rid" column="rid"></id>
            <result property="rname" column="rname"></result>
            <result property="rclass" column="rclass"></result>
        </collection>
    </resultMap>

    <select id="findUserAndRoleAllList" resultMap="getUserAndRoleAllList">
          SELECT u.`user_id`,u.`user_name`,u.`user_pwd`
          ,r.`rid`,r.`rname`,r.`rclass` FROM t_user u
          INNER JOIN  t_userrole ur
          ON u.`user_id`=ur.`user_id`
          INNER JOIN t_role r
          ON ur.`rid`=r.`rid`
    </select>

</mapper>

配置角色表的映射文件(RoleMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zking.mapper.IRoleMapper">

    <!--返回结果集合-->
    <resultMap id="getRoleAndUserAllList" type="t_role">
        <!--角色表信息-->
        <id property="rid" column="rid"></id>
        <result property="rname" column="rname"></result>
        <result property="rclass" column="rclass"></result>
        <!--建立NVN的关系-->
        <collection property="userList" ofType="t_user">
            <!--用户表信息-->
            <id property="user_id" column="user_id"></id>
            <result property="user_name" column="user_name"></result>
            <result property="user_pwd" column="user_pwd"></result>
        </collection>
    </resultMap>

    <select id="findRoleAndUserAllList" resultMap="getRoleAndUserAllList">
          SELECT u.`user_id`,u.`user_name`,u.`user_pwd`
          ,r.`rid`,r.`rname`,r.`rclass` FROM t_user u
          INNER JOIN  t_userrole ur
          ON u.`user_id`=ur.`user_id`
          INNER JOIN t_role r
          ON ur.`rid`=r.`rid`
    </select>

</mapper>

6、NVN关系用户表的测试类(UserTest):

/**
 * NVN关系的用户表的测试类
 */
public class UserTest {

    SqlSession sqlSession = null;

    @Before
    public void before() {
        //加载 mybatis 配置文件
        InputStream inputStream = UserTest.class.
                getClassLoader().getResourceAsStream("mybatis-Config.xml");
        //构建sqlSession的工厂
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //根据 sqlSessionFactory 产生 session
        sqlSession = sqlSessionFactory.openSession();
    }


    @Test
    public void getUserAndRoleAllList(){
        IUserMapper ium = sqlSession.getMapper(IUserMapper.class);
        System.out.println(ium.findUserAndRoleAllList());
    }


    @After
    public  void after(){
        sqlSession.close();
    }

}

NVN关系角色表的测试类(RoleTest):

/**
 * NVN关系的角色表的测试类
 */
public class RoleTest {

    SqlSession sqlSession = null;

    @Before
    public void before() {
        //加载 mybatis 配置文件
        InputStream inputStream = RoleTest.class.
                getClassLoader().getResourceAsStream("mybatis-Config.xml");
        //构建sqlSession的工厂
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //根据 sqlSessionFactory 产生 session
        sqlSession = sqlSessionFactory.openSession();
    }


    @Test
    public void getUserAndRoleAllList() {
        IRoleMapper irm = sqlSession.getMapper(IRoleMapper.class);
        System.out.println(irm.findRoleAndUserAllList());
    }


    @After
    public void after() {
        sqlSession.close();
    }

}

7、NVN关系用户表(角色表)的测试输出结果(因为查询的列都一样,所以结果都一样,只是为了体现双向关系):

DEBUG [main] - ==>  Preparing: SELECT u.`user_id`,u.`user_name`,u.`user_pwd` ,r.`rid`,r.`rname`,r.`rclass` FROM t_user u INNER JOIN t_userrole ur ON u.`user_id`=ur.`user_id` INNER JOIN t_role r ON ur.`rid`=r.`rid` 
DEBUG [main] - ==> Parameters: 
TRACE [main] - <==    Columns: user_id, user_name, user_pwd, rid, rname, rclass
TRACE [main] - <==        Row: b65b57f7-7528-11e8-af2e-80fa5b5015f0, admin, admin, 6f945d11-7e71-11e8-b4a1-80fa5b5015f0, 系统管理员, 第二等级
TRACE [main] - <==        Row: 126af322-752a-11e8-af2e-80fa5b5015f0, CCCCCC, CCCCCC, cc107538-8002-11e8-8235-80fa5b5015f0, 用户, 第三等级
TRACE [main] - <==        Row: 59c73a0e-8000-11e8-8235-80fa5b5015f0, super, super, 27e504e1-8000-11e8-8235-80fa5b5015f0, 超级管理员, 等一等级
DEBUG [main] - <==      Total: 3
[t_user{user_id='b65b57f7-7528-11e8-af2e-80fa5b5015f0', user_name='admin', user_pwd='admin', user_type=0, roleList=[t_role{rid='6f945d11-7e71-11e8-b4a1-80fa5b5015f0', rname='系统管理员', rclass='第二等级', userList=null}]}, t_user{user_id='126af322-752a-11e8-af2e-80fa5b5015f0', user_name='CCCCCC', user_pwd='CCCCCC', user_type=0, roleList=[t_role{rid='cc107538-8002-11e8-8235-80fa5b5015f0', rname='用户', rclass='第三等级', userList=null}]}, t_user{user_id='59c73a0e-8000-11e8-8235-80fa5b5015f0', user_name='super', user_pwd='super', user_type=0, roleList=[t_role{rid='27e504e1-8000-11e8-8235-80fa5b5015f0', rname='超级管理员', rclass='等一等级', userList=null}]}]

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值