Mybatis一对一关联关系-案例
1、SQL语句
USE mybatis; -- 创建用户表 CREATE TABLE `users`( `userid` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(20) DEFAULT NULL, `usersex` VARCHAR(10) DEFAULT NULL, PRIMARY KEY(`userid`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; -- 创建角色表 CREATE TABLE `roles`( `roleid` INT(11) NOT NULL AUTO_INCREMENT, `rolename` VARCHAR(30) DEFAULT NULL, `user_id` INT(11) DEFAULT NULL, PRIMARY KEY(`roleid`), UNIQUE KEY `roles_fk`(`user_id`) USING BTREE, CONSTRAINT `roles_fk` FOREIGN KEY(`user_id`) REFERENCES `users`(`userid`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO users VALUES(NULL,zhangsan,M), (NULL,lisi,M), (NULL,wangwu,F), (NULL,赵六,M); INSERT INTO roles VALUES(NULL, DBA, 1), (NULL, Normal, 2), (NULL, Normal, 3), (NULL, Guest, 4); SELECT * FROM roles; SELECT * FROM users;
2、POJO(Roles.java和Users.java)
2.1 Roles.java
public class Roles {
private Integer roleid;
private String rolename;
//private Integer userId; // userId是属于Users这个类的属性
// get/set/toString/constructor方法执行补充
}
特别注意:userId是属于Users这个类的属性,故在此类中不需要添加,虽然roles表中有这一列,只是用于查询是关联的。
2.2 Users.java
public class Users {
private Integer userid;
private String username;
private String usersex;
private Roles roles; // 用户角色
// get/set/toString/constructor方法执行补充
}
二、DAO层
1、UserMapper.java
public interface UserMapper {
List<Users> queryAll();
}
2、UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dyh.dao.UserMapper"> <resultMap id="usersMap" type="com.dyh.pojo.Users"> <id property="userid" column="userid" /> <result property="username" column="username" /> <result property="usersex" column="usersex" /> <!-- 配置一对一关联关系,查询users表的时候,会自动查询roles表 --> <association property="roles" javaType="com.dyh.pojo.Roles"> <id property="roleid" column="roleid" /> <result property="rolename" column="rolename" /> </association> </resultMap> <select id="queryAll" resultMap="usersMap"> select u.userid, u.username, u.usersex,r.roleid,rolename from users u , roles r where u.userid=r.user_id </select> </mapper>
三、测试UserMapperTest.java
package com.dyh.test;
import com.dyh.dao.UserMapper;
import com.dyh.pojo.Users;
import com.dyh.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
SqlSession session;
UserMapper mapper;
@Before
public void setUp(){
session = MybatisUtil.getConnection();
mapper = session.getMapper(UserMapper.class);
}
@Test
public void testQueryUsers(){
List<Users> list = mapper.queryAll();
list.forEach(System.out::println);
}
@After
public void setAfter(){
MybatisUtil.closeConnection();
}
}
运行结果如下:
下一篇:
用idea连接数据库8.0Druid连接
