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连接