mybatis 一对一映射
xml
<mapper namespace="com.oracle.dao.one2oneDao">
<sql id="personColum"> id,name,gender,age</sql>
<sql id="passportColum"> id ,bh,person_id</sql>
<sql id="passportColum2"> id ,bh</sql> <resultMap type="com.oracle.pojo.Passport" id="passportResultMap">
<id column="id" property="id" javaType="int" jdbcType="INTEGER"/>
<result column="bh" property="bh" javaType="string" jdbcType="VARCHAR"/>
<association property="person" column="person_id" javaType="com.oracle.pojo.Person" select="getPerson"></association>
</resultMap> <select id="getPerson" parameterType="int" resultType="com.oracle.pojo.Person">
select <include refid="personColum"></include>
from t_person_fk
where id=#{id}
</select> <select id="getPassport" parameterType="int" resultMap="passportResultMap">
select <include refid="passportColum"></include>
from t_passport_fk
where person_id=#{id}
</select>
<!-- ||||||||||||||||||||||||||||||||||| --> <resultMap type="com.oracle.pojo.Passport" id="passportResult">
<id column="id" property="id" javaType="int" jdbcType="INTEGER"/>
<result column="bh" property="bh" javaType="string" jdbcType="VARCHAR"/>
<association property="person" column="person_id" javaType="com.oracle.pojo.Person" resultMap="personResult"></association>
</resultMap> <resultMap type="com.oracle.pojo.Person" id="personResult">
<id column="id" property="id" javaType="int" jdbcType="INTEGER"/>
<result column="name" property="name" javaType="string" jdbcType="VARCHAR"/>
<result column="gender" property="gender" javaType="string" jdbcType="VARCHAR"/>
<result column="age" property="age" javaType="int" jdbcType="INTEGER"/>
</resultMap> <select id="getPersonAndPassport" parameterType="int" resultMap="passportResult">
select person.id,person.name,person.age,person.gender,
passport.id,passport.bh
from t_passport_fk passport left join
t_person_fk person on passport.person_id = person_id
where person.id=#{id}
</select>
<!-- |||||||||||||主键映射||||||||||||||||||| --> <select id="getPersonPK" parameterType="int" resultType="com.oracle.pojo.Person">
select <include refid="personColum"></include>
from t_person_pk
where id=#{id}
</select> <select id="getPassportPk" parameterType="int" resultMap="passportResultMapPK">
select <include refid="passportColum2"></include>
from t_passport_pk
where id=#{id}
</select> <resultMap type="com.oracle.pojo.Passport" id="passportResultMapPK">
<id column="id" property="id" javaType="int" jdbcType="INTEGER"/>
<result column="bh" property="bh" javaType="string" jdbcType="VARCHAR"/>
<association property="person" column="id" javaType="com.oracle.pojo.Person" select="getPersonPK"></association>
</resultMap>
Dao
public interface one2oneDao {
//////////////////外键映射
public Passport getPassport(int id); public Passport getPersonAndPassport(int id); ///////////////////////主键映射 public Passport getPassportPk(int id); }
Test
public static void main(String[] args) {
//获取数据源
String resource = "mybatis.xml";
InputStream inputStream=null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); one2oneDao one2onedao = session.getMapper(one2oneDao.class); // Passport passport = one2onedao.getPassport(2);
// System.out.println(passport); // Passport passport = one2onedao.getPersonAndPassport(2);
// System.out.println(passport); // Passport passportPk = one2onedao.getPassportPk(1);
// System.out.println(passportPk); session.commit();
} }
sql
/*基于外键映射*/
CREATE TABLE t_person_fk
(
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
gender VARCHAR2(10),
age NUMBER(3) CHECK(age BETWEEN 1 AND 100)
); CREATE TABLE t_passport_fk
(
id NUMBER(10) PRIMARY KEY,
bh VARCHAR2(30) NOT NULL UNIQUE,
person_id NUMBER(10) REFERENCES t_person_fk(id) UNIQUE
); CREATE SEQUENCE t_person_fk_seq
START WITH 1
INCREMENT BY 1; CREATE SEQUENCE t_passport_fk_seq
START WITH 1
INCREMENT BY 1; /*基于主键映射*/
CREATE TABLE t_person_pk
(
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
gender VARCHAR2(10),
age NUMBER(3) CHECK(age BETWEEN 1 AND 100)
); CREATE TABLE t_passport_pk
(
id NUMBER(10) PRIMARY KEY REFERENCES t_person_pk(id),
bh VARCHAR2(30) NOT NULL UNIQUE
); CREATE SEQUENCE t_person_pk_seq
START WITH 1
INCREMENT BY 1;
mybatis 一对一映射的更多相关文章
- Mybatis一对一映射
一.Mybatis一对一映射 本例讲述使用mybatis开发过程中常见的一对一映射查询案例.只抽取关键代码和mapper文件中的关键sql和配置,详细的工程搭建和Mybatis详细的流程代码可参见&l ...
- mybatis一对一映射配置详解
听说mybatis一对一有三种写法,今天我试了一下. 数据库表准备 为了偷懒,我直接就拿用户权限菜单里的菜单表和菜单与权限的中间表做实现,他们原来是多对多的关系,这边我假设这两张表是一对一. 表 g ...
- mybatis 一对一 映射实体类、嵌套查询
一对一 在SysUser 类中增加SysRole字段.1.sql语句将role.role_name映射到role.roleName上. 2.还可以在XML 映射文件中配置结果映射.<result ...
- Mybatis一对一映射resultMap子标签中顺序问题
直接上图 鼠标点上红线出现如下提示 The content of element type "resultMap" must match "(constructor?, ...
- 【Mybatis高级映射】一对一映射、一对多映射、多对多映射
前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...
- mybatis高级映射(一对一,一对多)
mybatis高级映射 一对一关联映射 需求:查询订单信息,关联查询用户信息(一个订单对应一个用户) (1)通过resultType实现 sql语句: select orders.* , USER.u ...
- Mybatis输入输出映射_动态sql_关联关系(一对一、一对多、多对多)
Mybatis输入输出映射_动态sql_关联关系(一对一.一对多.多对多)输入输出映射parameterType完成输入映射parameterType可以传入的参数有,基本数据类型(根据id查询用户的 ...
- MyBatis高级查询 一对一映射
drop database if exists simple; create database simple; use simple; drop table if exists sys_user; c ...
- MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查 ...
随机推荐
- Window Phone 8手电筒
一直想开发一个Wp8的手电筒程序,看了好多别人开发的基本上有以下问题: 1.锁屏闪光灯关闭了 2.闪光灯不停的闪烁. 我就想开发一个锁屏也能用的手电筒,发现找资料那是相当的困难.找到的代码基本都不能令 ...
- [android开发篇]权限分类:正常权限和危险权限
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous 系统权限 本文内容 安全架构 ...
- .NET重构(二):ArrayList,List,IList的联系和区别
导读:在机房重构的时候,为了降低耦合,不能返回DataTable型数据,而需要转换为泛型集合.我一直使用的就是IList,那天师傅过来帮我挑错,问我:你为什么一直写IList呢,不应该是List吗?好 ...
- Codeforces 894.A QAQ
A. QAQ time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2
3743: [Coci2015]Kamp Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 484 Solved: 229[Submit][Status ...
- cf701E Connecting Universities
Treeland is a country in which there are n towns connected by n - 1 two-way road such that it's poss ...
- JCaptcha+Memcache的验证码集群实现
一.问题背景 为了防止垃圾信息发布机器人的自动提交攻击,采用CAPTCHA验证码来保护该模块,提高攻击者的成本. 二.验证码简介 全自动区分计算机和人类的图灵测试(Completely Automat ...
- Lucky and Good Months by Gregorian Calendar(poj 3393)
大致题意: 科普文一篇,文章80%都是无用信息,因为都是常识,但是又不得不看,因为有20%是常人不知道的历史常识. 定义: Goog month : 该月第一个工作日为星期一的月份 Luckly mo ...
- POJ 2096 (dp求期望)
A - Collecting Bugs Time Limit:10000MS Memory Limit:64000KB 64bit IO Format:%I64d & %I64 ...
- Linux下AT&T汇编语法格式与Intel汇编语法格式异同
由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&a ...