02 mybatis一对一

本文将阐述mybatis中的表是一对一关系的情况下如何完成查询操作。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • jdk-8u162-windows-x64
  • mybatis3.2.8
  • mysql 6.5

2、前提约束

3、操作步骤

  • 创建一个用户表和一个登录表
create table t_user(id int, name varchar(20));
insert into t_user(id,name) values(1,'ali');
insert into t_user(id,name) values(2,'zhangli');
create table t_login(id int, username varchar(20), password varvhar(20), userid int);
insert into t_login(id,username,password,userid) values(1,'aliuser','alipass',1);
insert into t_login(id,username,password,userid) values(2,'zhangliuser','zhanglipass',2);
  • 创建两张表对应的实体类
    User.java
package net.wanho.entity;

import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;

    public User() {
    }


    public User(String name)
    {
        this.name = name;
    }
    public User(int id, String name) {
        this.id = id;
        this.name = 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 "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

Login.java

package net.wanho.entity;

import java.io.Serializable;

public class Login implements Serializable {
    private int id;
    private String username;
    private String password;

    private User user;

    public Login(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Login() {
    }


    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    @Override
    public String toString() {
        return "Login{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
  • 在UserMapper.java中新增一个查询方法
List<Login> selectLogin();
  • 在UserMapper.xml中新增标签
    <select id="selectLogin" resultMap="loginMap">
        select l.id, l.username,l.password,u.name from t_login l , t_user  u where l.userid=u.id;
    </select>
    <resultMap id="loginMap" type="net.wanho.entity.Login">
        <result column="id" property="id" javaType="int"></result>
        <result column="username" property="username" javaType="String"></result>
        <result column="password" property="password" javaType="String"></result>
        <association property="user" javaType="net.wanho.entity.User">
            <id property="id" column="id"></id>
            <result property="name" column="name"></result>
        </association>
    </resultMap>
  • 测试
//关键代码
String resource ="mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<Login> loginList = userMapper.selectLogin();

通过单步调试,便能查看到loginList包含t_login以及t_user中的数据。

猜你喜欢

转载自www.cnblogs.com/alichengxuyuan/p/12554757.html