Mybatis 一对一(OneToOne)关系映射__INSERT
id int(3) not null auto_increment,
name varchar(20) default null,
age int(3) default 0,
primary key (id)
) charset="gb2312";
CREATE TABLE t_passport( 
  id int(3), 
  serial varchar(20) default NULL, 
  expiry int(3) default NULL, 
  PRIMARY KEY (id), 
  CONSTRAINT fk_passport FOREIGN KEY (id) REFERENCES t_person(id)     
)charset="gb2312"; 
import java.io.Serializable;
public class Person implements Serializable{ 
  private static final long serialVersionUID = 4524251837950555570L; 
  private int id; 
  private String name; 
  private int age; 
    
  public int getId() { 
    return id; 
  } 
  public void setId(int id) { 
    this.id = id; 
  } 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getAge() { 
    return age; 
  } 
  public void setAge(int age) { 
    this.age = age; 
  } 
} 
public class Passport { 
  private int id; 
  private String serial; 
  private int expiry; 
    
  public int getId() { 
    return id; 
  } 
  public void setId(int id) { 
    this.id = id; 
  } 
  public String getSerial() { 
    return serial; 
  } 
  public void setSerial(String serial) { 
    this.serial = serial; 
  } 
  public int getExpiry() { 
    return expiry; 
  } 
  public void setExpiry(int expiry) { 
    this.expiry = expiry; 
  }    
} 
import com.lixing.ibatis.entity.onetoone.Person;
public interface PersonMapper { 
  void insertPerson(Person person); 
} 
import com.lixing.ibatis.entity.onetoone.Passport;
public interface PassportMapper { 
  void insertPassport(Passport passport); 
} 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lixing.ibatis.onetoone.mapper.PersonMapper">
<parameterMap type="Person" id="parameterPersonMap">
<parameter property="id"/>
<parameter property="name"/>
<parameter property="age"/>
</parameterMap>
<insert id="insertPerson" parameterMap="parameterPersonMap">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
INSERT INTO t_person(name,age)
VALUES(#{name},#{age}) <!--记得不要有逗号-->
</insert>
</mapper>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lixing.ibatis.onetoone.mapper.PassportMapper">
<parameterMap type="Passport" id="passportMap">
<parameter property="id"/>
<parameter property="serial"/>
<parameter property="expiry"/>
</parameterMap>
<insert id="insertPassport" parameterMap="passportMap">
INSERT INTO t_passport(id,serial,expiry)
VALUES(?,?,?)
</insert>
</mapper>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- changes from the defaults for testing -->
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<!--在此申明两个别名类,-->
<typeAlias alias="Passport" type="com.lixing.ibatis.entity.onetoone.Passport" />
<typeAlias alias="Person" type="com.lixing.ibatis.entity.onetoone.Person"/>
</typeAliases>
<environments default="development"> 
    <environment id="development"> 
      <transactionManager type="JDBC" /> 
      <dataSource type="POOLED"> 
        <property name="driver" value="com.mysql.jdbc.Driver" /> 
        <property name="url" value="jdbc:mysql://localhost:3306/test" /> 
        <property name="username" value="root" /> 
        <property name="password" value="7501857" /> 
      </dataSource> 
    </environment> 
  </environments> 
  <mappers> 
    <mapper resource="com/lixing/ibatis/onetoone/mapper/PassportMapper.xml" /> 
     
    <mapper resource="com/lixing/ibatis/onetoone/mapper/PersonMapper.xml" /> 
        
  </mappers> 
</configuration> 
import java.sql.SQLException;
import org.apache.ibatis.session.SqlSession; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.transaction.Transaction; 
import org.apache.ibatis.transaction.TransactionFactory; 
import org.apache.ibatis.transaction.jdbc.JdbcTransaction; 
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test;
import com.lixing.ibatis.entity.onetoone.Passport; 
import com.lixing.ibatis.entity.onetoone.Person; 
import com.lixing.ibatis.onetoone.mapper.PassportMapper; 
import com.lixing.ibatis.onetoone.mapper.PersonMapper; 
import com.lixing.ibatis.util.MyBatisUtil;
public class PassportMapperTest { 
  private SqlSessionFactory sqlSessionFactory = null; 
  private SqlSession session = null;
@Before 
  public void before() { 
    sqlSessionFactory = MyBatisUtil.getInstance(); 
    session = sqlSessionFactory.openSession(); 
  }
@Test 
  public void testInsertPerson() throws SQLException {
Person person = new Person(); 
    person.setName("李新2"); 
    person.setAge(25); 
     
    Passport passport = new Passport(); 
  //    passport.setId(person.getId());    //写在此处是错误的
    passport.setSerial("Serial2"); 
    passport.setExpiry(22222); 
     
     
    TransactionFactory transactionFactory = new JdbcTransactionFactory(); 
    Transaction tx = transactionFactory.newTransaction(session 
        .getConnection(), false);     
    PersonMapper personMapper = session.getMapper(PersonMapper.class); 
    PassportMapper passportMapper = session.getMapper(PassportMapper.class); 
    try{ 
      personMapper.insertPerson(person);     
      passport.setId(person.getId());  //必须写在insertPerson之后
      passportMapper.insertPassport(passport); 
      tx.commit(); 
    }catch(Exception e){ 
      tx.rollback(); 
      e.printStackTrace(); 
    }finally{ 
      tx.close(); 
      System.out.println(person.getId()); 
    } 
  }
@After 
  public void after() { 
    // session.close(); 
  } 
} 
Mybatis 一对一(OneToOne)关系映射__INSERT的更多相关文章
- Hibernate各种基本注解及一对一(多)关系映射采坑笔记
		
hibernate提供两种方式配置关系映射,一种XMl配置,一种注解.SpringBoot已经自带了hibernate注解方式,我也是特别喜欢使用注解,特此记下常用的知识点. 1.基本注解 @Tabl ...
 - Mybatis中对象关系映射
		
在实际开发中,实体类之间有一对一.一对多.多对多的关系,所以需要正确配置它们对应关系,Mybatis通过配置文件能够从数据库中获取列数据后自动封装成对象. 如:一个订单Orders类对应一个用户Use ...
 - MyBatis 一对一(OneToOne)__SELECT
		
1.创建SQL脚本: CREATE TABLE t_person( id int(3) not null auto_increment, name varchar(20) default null ...
 - [Z]Spring Data JPA 之 一对一,一对多,多对多 关系映射
		
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
 - Spring Data JPA 之 一对一,一对多,多对多 关系映射
		
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
 - [刘阳Java]_MyBatis_实体关系映射_第8讲
		
MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能.下面我们就来介绍一下如何使用MyBatis的实体关系映射 1.MyBatis实体关系映射 ...
 - Hibernate One-to-One Mappings 一对一关系映射
		
Hibernate One-to-One Mappings 一对一关系映射 关键:一对一关系映射和多对一关系映射非常像.仅仅是unique 属性值为 true 样例:一个员工仅仅能有一个地址. Hib ...
 - 【mybatis xml】数据层框架应用--Mybatis(三)关系映射之一对一关系映射
		
实际的开发中,对数据库的操作常常会涉及到多张表,这在面向对象中就涉及到了对象与对象之间的关联关系. 针对多表之间的操作,MyBatis提供了关联映射,通过关联映射就可以很好的处理对象与对象之间的关联关 ...
 - mybatis中一对一关系映射
		
一对一关系中普通的配置方式 一.多表连接查询语句: <select id="selectStudentWithAddress" parameterType="int ...
 
随机推荐
- java基础之bit、byte、char、String
			
bit 位,二进制数据0或1 byte 字节,一个字节等于8位二进制数 char 字符, String 字符串,一串字符 常见转换 1 字母 = 1byte = 8 bit 1 汉字 = 2byt ...
 - Kubernetes client-go
			
Github地址:https://github.com/kubernetes/client-go 访问kubernetes集群有几下几种方式: 方式 特点 支持者 Kubernetes dashboa ...
 - wampserver安装在服务器中,但是mysql不能远程登录的解决方案
			
利用mysql workbench或者Navicat连接服务器的mysql时,有时候会出现拒绝访问, 因为在mysql中没有赋予其他用户权限,只能本地登录,所以要进行设置. 设置如下: 打开mysql ...
 - Servlet和Filter的url匹配以及url-pattern详解
			
Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜.估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,ser ...
 - 一个简单的Javascript闭包示例
			
//=====用闭包实现函数的Curry化===== //数字求和函数的函数生成器 function addGenerator( num ){ //返回一个简单的匿名函数,求两个数的和,其中第一个数字 ...
 - Phoenix表和索引分区数对插入和查询性能的影响
			
1. 概述 1.1 HBase概述 HBase由master节点和region server节点组成.在100-105集群上,100和101是master节点,102-105是region serve ...
 - UVA 11181 Probability|Given (离散概率)
			
题意:有n个人去商场,其中每个人都有一个打算买东西的概率P[i].问你最后r个人买了东西的情况下每个人买东西的概率 题解:一脸蒙蔽的题,之前的概率与之后的概率不一样??? 看了白书上的题解才知道了,其 ...
 - apache实现http自动转为https
			
1.确认此服务器apache已经配置过证书可以用https访问到 2.确认/etc/apache2/ports.conf 下有 Listen 80Listen 443(此条) 3.配置虚礼主机定将域名 ...
 - Python快速学习-获取对象信息
			
1type() 获取对象的基本类型,判断两个对象类型. 2types 判断对象是否是函数,使用前要引入import types 3isinstance() 判断class类型,判断一个变量是否是某种类 ...
 - js建造者(生成器)模式
			
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成. 建造者模式类图: ...