Java基础-SSM之mybatis一对一关联

                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.准备测试环境(创建数据库表)

 1>.创建husbands和wifes表并建立关联关系(外键约束) 

use yinzhengjie;create table husbands(id int primary key auto_increment , hname varchar(20)) ;create table wifes(id int primary key , hname varchar(20)) ;alter table wifes add constraint fk_id foreign key (id) references husbands(id) ;

2>.添加Maven依赖

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6     <groupId>cn.org.yinzhengjie</groupId>
 7     <artifactId>Mybatis</artifactId>
 8     <version>1.0-SNAPSHOT</version>
 9     <dependencies>
10         <dependency>
11             <groupId>junit</groupId>
12             <artifactId>junit</artifactId>
13             <version>4.11</version>
14         </dependency>
15         <dependency>
16             <groupId>mysql</groupId>
17             <artifactId>mysql-connector-java</artifactId>
18             <version>5.1.17</version>
19         </dependency>
20         <dependency>
21             <groupId>org.mybatis</groupId>
22             <artifactId>mybatis</artifactId>
23             <version>3.2.1</version>
24         </dependency>
25     </dependencies>
26 </project>

3>.目录结构如下:

二.编写自定义类

1>.Husband.java 文件内容

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie.mybatis.domain.one2one;
 7
 8 public class Husband {
 9     private Integer id ;
10     private String hname ;
11     private Wife wife ;
12
13     public Integer getId() {
14         return id;
15     }
16
17     public void setId(Integer id) {
18         this.id = id;
19     }
20
21     public String getHname() {
22         return hname;
23     }
24
25     public void setHname(String hname) {
26         this.hname = hname;
27     }
28
29     public Wife getWife() {
30         return wife;
31     }
32
33     public void setWife(Wife wife) {
34         this.wife = wife;
35     }
36 }

2>.Wife.java 文件内容

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie.mybatis.domain.one2one;
 7
 8 public class Wife {
 9     private String wname ;
10     private Husband husband ;
11
12     public String getWname() {
13         return wname;
14     }
15
16     public void setWname(String wname) {
17         this.wname = wname;
18     }
19
20     public Husband getHusband() {
21         return husband;
22     }
23
24     public void setHusband(Husband husband) {
25         this.husband = husband;
26     }
27 }

三.编写配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2
 3 <!DOCTYPE configuration
 4         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 5         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 6 <configuration>
 7     <properties>
 8         <property name="driver" value="com.mysql.jdbc.Driver"/>
 9         <!--注意 : “?characterEncoding=utf-8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;allowMultiQueries=true” 表示开启批处理模式-->
10         <property name="url" value="jdbc:mysql://localhost:5200/yinzhengjie?characterEncoding=utf-8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;allowMultiQueries=true"/>
11         <property name="username" value="root"/>
12         <property name="password" value="yinzhengjie"/>
13     </properties>
14
15     <!-- 我们使用typeAliases标签给我们自定义类起个别名。-->
16     <typeAliases>
17         <typeAlias type="cn.org.yinzhengjie.mybatis.domain.one2one.Husband"     alias="_Husband" />
18         <typeAlias type="cn.org.yinzhengjie.mybatis.domain.one2one.Wife"        alias="_Wife" />
19     </typeAliases>
20
21     <environments default="development">
22         <environment id="development">
23             <transactionManager type="JDBC"/>
24             <dataSource type="POOLED">
25                 <property name="driver" value="${driver}"/>
26                 <property name="url" value="${url}"/>
27                 <property name="username" value="${username}"/>
28                 <property name="password" value="${password}"/>
29             </dataSource>
30         </environment>
31     </environments>
32     <mappers>
33         <!-- 我们使用mapper标签指定映射文件,使用resource指定具体的路径,如果没有写绝对路径,默认的根路径就在resources目录中-->
34         <mapper resource="HusbandMapper.xml"/>
35         <mapper resource="WifeMapper.xml"/>
36     </mappers>
37 </configuration>

mybatis-config.xml 文件内容

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <!-- 定义名字空间 -->
 5 <mapper namespace="husbands">
 6     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
 7         insert into husbands(hname) values(#{hname}) ;
 8     </insert>
 9
10 </mapper>

HusbandMapper.xml 文件内容

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <!-- 定义名字空间 -->
5 <mapper namespace="wifes">
6     <insert id="insert">
7         insert into wifes(id , hname) values(#{husband.id} , #{wname}) ;
8     </insert>
9 </mapper>

WifeMapper.xml 文件内容

四.编写测试代码

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie.mybatis.test;
 7
 8 import cn.org.yinzhengjie.mybatis.domain.one2one.Husband;
 9 import cn.org.yinzhengjie.mybatis.domain.one2one.Wife;
10 import org.apache.ibatis.io.Resources;
11 import org.apache.ibatis.session.SqlSession;
12 import org.apache.ibatis.session.SqlSessionFactory;
13 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
14 import org.junit.Test;
15
16 import java.io.InputStream;
17
18 /**
19  * 测试一对一
20  */
21 public class TestOne2One {
22     @Test
23     public void testInsert() throws Exception {
24         InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
25         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
26         SqlSession sess = sf.openSession();
27
28         Husband h1 = new Husband();
29         h1.setHname("zhangjie");
30         Wife w1 = new Wife();
31         w1.setWname("xiena");
32         h1.setWife(w1);
33         w1.setHusband(h1);
34         sess.insert("husbands.insert" , h1) ;
35         sess.insert("wifes.insert" , w1) ;
36         sess.commit();
37         sess.close();
38         System.out.println("插入成功");
39     }
40
41 }

   运行以上代码查看数据库内容如下:

转载于:https://www.cnblogs.com/yinzhengjie/p/9287322.html

Java基础-SSM之mybatis一对一关联相关推荐

  1. Java基础-SSM之mybatis快速入门篇

    Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...

  2. [Java基础 持久层Mybatis] Mybatis使用IN语句查询

    前言: #传入参数可以预防sql注入攻击,而$不行,这是缺点所在,非必须情况下,还请尽量使用#预编译的形式传入参数 一般都是先将String转成list或者数组,再用foreach去循环,类似这样(如 ...

  3. mybatis一对一关联查询

    public class CardInfo implements java.io.Serializable{     private int id;     private String cardNu ...

  4. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  5. 【mybatis】一对一关联查询

    mybatis: 一对一关联查询 注意 代码部分 实体类(extity) mybatis mapper service controller 注意 在.xml文件编写中有报错,The content ...

  6. Mybatis系列(三):Mybatis实现关联表查询

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...

  7. Mybatis 实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  8. MyBatis 实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  9. association判断不为空时_mybatis 一对一关联 association 返回空值

    mybatis 一对一关联 association 返回空值 最近学习spring mvc + mybatis开发,看的书是<Spring MVC+Mybatis开发 从入门到精通>,在学 ...

最新文章

  1. 收藏这10个办公神器,让你的职场办公更高效!
  2. 如何查看用index.php,为什么整个网站使用一个index.php页面?
  3. mac之brew安装卸载使用
  4. HTML+CSS+JavaScript复习笔记持更(五)——CSS选择器
  5. pyqt5 + pyinstaller 制作爬虫小程序
  6. display:column常用属性解释
  7. 法定节假日违规组织培训,51talk被通报批评整改不到位
  8. Atitit js通讯技术 jsbridge ajax bomext Atitit jsbridge 与jsrpc 的联系与区别 JSBridge——Web与Native交互 侧重本
  9. 软件测试-禅道下载及安装-测试人员必会工具
  10. 系统集成项目管理工程师和网络工程师哪个好考?
  11. HTML5移动开发的10大移动APP开发框架
  12. 【51单片机】矩阵键盘
  13. matlab创建个性化绚丽色彩图
  14. java随机生成迷宫游戏地图_java随机生成迷宫(图的深度优先遍历)
  15. Containerd shim 原理深入解读
  16. java对外接口安全问题_怎么保证对外暴露接口的安全性(调用频率限制)
  17. 利用GitHub Actions每天自动从Pixiv爬虫日推图片并存放到仓库
  18. SAP在华真相:天价收费与用户之灾
  19. 用cocos2dx做一个简单的单机捕鱼达人游戏(6)结束告辞
  20. 【repo使用指南】

热门文章

  1. java socket使用udp协议与局域网群聊软件feiQ通信
  2. Linux重定向输出日志
  3. 组合逻辑电路毛刺产生原因及防止办法
  4. 【Amber】分子动力学结果分析(二)PMF
  5. 考研英语写作的高分,竟然是靠这些“套路”
  6. 【博客181】查看一个端口是否被占用
  7. 点焊机器人焊接超时_焊接机器人常见故障原因及解决措施
  8. 订货系统的原理及“四管一做”
  9. 金凤镇流动人口信息管理系统
  10. U盘PE安装XP原版镜像的方法(ZT)