您的位置:首页 > 其它

mybatis学习笔记(四) --- 一对一关联

2016-11-14 11:03 351 查看
其实一对一关联其实是为了联表查询

主要查询语句如下:

select * from book,user_differ where book_user_id = user_id and user_id = #{id}

1.我们还是先建数据库,数据库book表和 user_differ,这两张表示有关联的

DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`book_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`book_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`book_user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`book_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('1', 'nodejs', '1');
INSERT INTO `book` VALUES ('2', 'js经典', '2');
INSERT INTO `book` VALUES ('3', 'react全栈', '1');
DROP TABLE IF EXISTS `user_differ`;
CREATE TABLE `user_differ` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user_differ
-- ----------------------------
INSERT INTO `user_differ` VALUES ('1', 'updateUserxxxxx');
INSERT INTO `user_differ` VALUES ('2', 'qqq');
INSERT INTO `user_differ` VALUES ('3', 'adsasd');
INSERT INTO `user_differ` VALUES ('4', 'adsasd');
INSERT INTO `user_differ` VALUES ('5', 'adsasd');
INSERT INTO `user_differ` VALUES ('10', 'k9999');
INSERT INTO `user_differ` VALUES ('11', 'k9999');
INSERT INTO `user_differ` VALUES ('12', 'k9999');
INSERT INTO `user_differ` VALUES ('96', 'k9999');
INSERT INTO `user_differ` VALUES ('97', 'kaiser');
INSERT INTO `user_differ` VALUES ('98', 'kaiser');
INSERT INTO `user_differ` VALUES ('99', 'kaiser');


2.定义实体类 Book

public class Book {
private int id;
private String name;
private User user;
get/set方法
}


3.定义 sql 映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.userDao.userMapperOne2One">

<select id="getRelate" parameterType="int" resultMap="relateMap">
select * from book,user_differ where book_user_id = user_id and user_id = #{id}
</select>

<resultMap id="relateMap" type="com.vo.Book">
<id column="book_id" property="id"/>
<result column="book_name" property="name"/>
<association column="book_user_id" property="user" javaType="com.vo.User">
<id column="user_id" property="id"/>
<result column="user_name" property="name"/>
</association>
</resultMap>
</mapper>


4.测试
public class testOne2One {
public static void main(String[] args) throws IOException {
//省略获取SQLsession这一步了
List<Book> books = session.selectList("com.userDao.userMapperOne2One.getRelate",1);
System.out.println(books);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: