• 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;
  • 相关阅读:
    Solidity通过合约转ERC20代币
    各种开源协议区别
    shell脚本之函数
    shell脚本之循环和循环控制
    shell脚本之if判断以及case多分支选择
    shell脚本之数组
    shell脚本之变量
    nginx常用内置变量
    nignx配置文件详解
    nginx源码安装./configure常见参数详解
  • 原文地址:https://www.cnblogs.com/Damon-Luo/p/5662831.html
Copyright © 2020-2023  润新知