1.首先创建两张表(自己插入数据)
显然一个order只能对应一个User
2.需求
根据订单id=3查询用户名
3.在数据库实现查询
SELECT o.id o_id ,u.`username` u_name
FROM
orders o,USER u
WHERE
o.`user_id`=u.`id`
AND
o.`id`=3;
4.建两个model,ordes,user_2,对应两张表
(1)user_2
public class User_2 {
private int id;
private String name;
private String address;
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User_2{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
(2)orders (将user包装进去,实现一对一)
public class Orders {
private int id;
private int user_id;
private Date createtime;
private String number;
private User_2 user;
public User_2 getUser() {
return user;
}
public void setUser(User_2 user) {
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@Override
public String toString() {
return "Orders{" +
"id=" + id +
", user_id=" + user_id +
", createtime=" + createtime +
", number='" + number + '\'' +
", user=" + user +
'}';
}
}
3.映射接口方法添加
public List<Orders> find_3(int o_id);
4.配置映射(对Association标签的使用)
<resultMap id="re_3" type="mybatis.model.Orders">
<result column="o_id" property="id"></result>
<association property="user" javaType="mybatis.model.User_2">
<result column="u_name" property="name"></result>
</association>
</resultMap>
<select id="find_3" parameterType="int" resultMap="re_3">
SELECT o.id o_id ,u.`username` u_name
FROM
orders o,USER u
WHERE
o.`user_id`=u.`id`
AND
o.`id`=#{id};
</select>
5.test
public class test10 {
@Test
public void test1() throws IOException {
//加载配置文件
InputStream stream = Resources.getResourceAsStream("mybatis/mapper/SqlMapConfig.xml");
//加载xml到工厂创造者
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//利用build创造会话类
SqlSession sqlSession = build.openSession();
//调用sqlsession实现sql语句
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<Orders> mapper_3 = mapper.find_3(3);
for(Orders orders: mapper_3){
int id = orders.getId();
String name = orders.getUser().getName();
System.out.println("订单id是 "+id+" 用户名是 "+name);
}
//提交事务
sqlSession.commit();
//关闭会话
sqlSession.close();
}
}
6.结果
订单id是 3 用户名是 王五
7.注意
(1)注意基本配置里面数据库的url的库名要确认一下