Java基础-SSM之mybatis一对一关联
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&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true” 表示开启批处理模式--> 10 <property name="url" value="jdbc:mysql://localhost:5200/yinzhengjie?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&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一对一关联相关推荐
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- [Java基础 持久层Mybatis] Mybatis使用IN语句查询
前言: #传入参数可以预防sql注入攻击,而$不行,这是缺点所在,非必须情况下,还请尽量使用#预编译的形式传入参数 一般都是先将String转成list或者数组,再用foreach去循环,类似这样(如 ...
- mybatis一对一关联查询
public class CardInfo implements java.io.Serializable{ private int id; private String cardNu ...
- (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...
- 【mybatis】一对一关联查询
mybatis: 一对一关联查询 注意 代码部分 实体类(extity) mybatis mapper service controller 注意 在.xml文件编写中有报错,The content ...
- Mybatis系列(三):Mybatis实现关联表查询
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...
- Mybatis 实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- MyBatis 实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- association判断不为空时_mybatis 一对一关联 association 返回空值
mybatis 一对一关联 association 返回空值 最近学习spring mvc + mybatis开发,看的书是<Spring MVC+Mybatis开发 从入门到精通>,在学 ...
最新文章
- 收藏这10个办公神器,让你的职场办公更高效!
- 如何查看用index.php,为什么整个网站使用一个index.php页面?
- mac之brew安装卸载使用
- HTML+CSS+JavaScript复习笔记持更(五)——CSS选择器
- pyqt5 + pyinstaller 制作爬虫小程序
- display:column常用属性解释
- 法定节假日违规组织培训,51talk被通报批评整改不到位
- Atitit js通讯技术 jsbridge ajax bomext Atitit jsbridge 与jsrpc 的联系与区别 JSBridge——Web与Native交互 侧重本
- 软件测试-禅道下载及安装-测试人员必会工具
- 系统集成项目管理工程师和网络工程师哪个好考?
- HTML5移动开发的10大移动APP开发框架
- 【51单片机】矩阵键盘
- matlab创建个性化绚丽色彩图
- java随机生成迷宫游戏地图_java随机生成迷宫(图的深度优先遍历)
- Containerd shim 原理深入解读
- java对外接口安全问题_怎么保证对外暴露接口的安全性(调用频率限制)
- 利用GitHub Actions每天自动从Pixiv爬虫日推图片并存放到仓库
- SAP在华真相:天价收费与用户之灾
- 用cocos2dx做一个简单的单机捕鱼达人游戏(6)结束告辞
- 【repo使用指南】