• mybatis 一对一关联


    首先建表:

    CREATE TABLE teacher(
        t_id INT PRIMARY KEY AUTO_INCREMENT, 
        t_name VARCHAR(20)
    );
    CREATE TABLE class(
        c_id INT PRIMARY KEY AUTO_INCREMENT, 
        c_name VARCHAR(20), 
        teacher_id INT
    );
    ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id);    
    
    INSERT INTO teacher(t_name) VALUES('LS1');
    INSERT INTO teacher(t_name) VALUES('LS2');
    
    INSERT INTO class(c_name, teacher_id) VALUES('bj_a', 1);
    INSERT INTO class(c_name, teacher_id) VALUES('bj_b', 2);

    再cn.beam包下,简历两个Class类。分别是Classes.java和Teacher.java

    public class Classes {
        private int id;
        private String name;
        private Teacher teacher;
    }
    public class Teacher {
        private int id;
        private String name;
    }

    然后分别构造方法,做get和set方法。

    配置config.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD  Config 3.0//EN"               
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <properties resource="db.properties"/>
    
        <typeAliases>
            <typeAlias type="cn.bean.Classes" alias="Classes"/>
            <typeAlias type="cn.bean.Teacher" alias="Teacher"/>
        </typeAliases>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}" />    
                    <property name="url" value="${url}" />
                    <property name="username" value="${username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="cn/test5/ClassMapper.xml"/>
        </mappers>
    </configuration>

    配置db.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis
    username=root
    password=root

    配置mapper文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
    <mapper namespace="cn.test5.ClassMapper">
        <!-- 根据班级id查询班级信息(带老师的信息) -->
        <select id="getClass" parameterType="int" resultMap="classResultMap">
            SELECT * FROM class c ,teacher t WHERE c.c_id = t.t_id and c.c_id=#{id}
        </select>
        
        <resultMap type="Classes" id="classResultMap">
            <id property="id" column="c_id"/>
            <result property="name" column="c_name"/>
            
            <association property="teacher" javaType="Teacher">
                <id property="id" column="t_id"/>
                <result property="name" column="t_name"/>
            </association>
        </resultMap>
    </mapper>

    做一个utils

    import java.io.InputStream;
    
    import junit.framework.Test;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class MyBatisUtils {
        public static SqlSessionFactory getFactory(){
            String resource = "conf.xml";
            
            InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
            
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            
            return factory;
        }
    }

    做一个测试,测试结果:

    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    
    import cn.bean.Classes;
    import cn.utils.MyBatisUtils;
    
    public class Test5 {
        @Test
        public void selectTeacherByCid(){
            SqlSessionFactory factory = MyBatisUtils.getFactory();
            SqlSession session = factory.openSession(true);
            String statement = "cn.test5.ClassMapper.getClass";
            Classes c = session.selectOne(statement, 1);
            System.out.println(c);
        }
    }

    结果如下:

    Classes [id=1, name=bj_a, teacher=Teacher [id=1, name=LS1]]

  • 相关阅读:
    JavaScript学习心得(六)
    JavaScript学习心得(五)
    JavaScript学习心得(四)
    JavaScript学习心得(三)
    JavaScript学习心得(二)
    JavaScript学习心得(一)
    socket异步接收信息
    DataTable将行转成列
    highcharts的柱状图边线
    w3cSchool jquery学习
  • 原文地址:https://www.cnblogs.com/invban/p/5102031.html
Copyright © 2020-2023  润新知