• java之mybatis之字段映射及多对一


    1. 数据库中表的列名和实体类的属性名称不一致。

    可以使用 resultMap来解决。

        <select id="findAll" resultMap="UserMap">
            select id,userName,age from t_user
        </select>
        <resultMap type="User" id="UserMap">
            <!--id映射主键 property是实体类的属性名 column是表中的列名  -->
            <id property="id" column="id"/>
            <result property="name" column="userName"/>
            <result property="age" column="age"/>
        </resultMap>

    2.在 mybatis 中多对一映射处理

    用户表和角色表示多对一的关系

    3.java 类结构

    用户类:User.java

    public class User implements Serializable{
        private int id;
        private String name;
        private int age;
        private int roleId;
        private Role role;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getRoleId() {
            return roleId;
        }
        public void setRoleId(int roleId) {
            this.roleId = roleId;
        }
        public Role getRole() {
            return role;
        }
        public void setRole(Role role) {
            this.role = role;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + ", roleId=" + roleId + ", role=" + role + "]";
        }
    }

    角色类:Role.java

    public class Role {
        private int id;
        private String name;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "Role [id=" + id + ", name=" + name + "]";
        }
    }

    4.映射关系----通过sql语句将两张表关联起来

    <mapper namespace="cn.sxt.vo.UserMapper">
        <select id="findAll" resultMap="UserMap">
            select u.id as uid,u.name as uname,u.age as uage,
            roleId,r.name as rname from t_user u,t_role r 
            where u.roleId=r.id
        </select>
        <resultMap type="User" id="UserMap">
            <id property="id" column="uid"/>
            <result property="name" column="uname"/>
            <result property="age" column="uage"/>
            <result property="roleId" column="roleId"/>
            <!-- 映射关联对象 -->
            <association property="role" column="roleId" javaType="Role">
                <id property="id" column="roleId"/>
                <result property="name" column="rname"/>
            </association>
        </resultMap>
    </mapper>

    5.测试

      @Test
        public void testFindAll() throws IOException{
            SqlSession session = MybatisUtil.getSqlSession();
            List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
            for(User u:list){
                System.out.println(u);
            }
            session.close();
        }
  • 相关阅读:
    Docker——JVM 感知容器的 CPU 和 Memory 资源限制
    Redis——封装通用的Redis组件
    Redis——Springboot集成Redis集群
    Redis——Spring集成Redis集群
    SQL SERVER 聚集索引 非聚集索引 区别
    一个页面同时发起多个ajax请求,会出现阻塞情况
    firefox快速刷新error及解决办法
    js 右击事件
    SQL group by 分组后,同一组的排序后取第一条
    SqlServer触发器
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/11297527.html
Copyright © 2020-2023  润新知