【Java复习Ⅲ 09】MyBatis框架_一对多

20210327周六_mybatis框架_一对多
21年的4月4日,我们就这样开始一轮基础复习,就像是为了高考进行的备战一样,我认为只有基础到位了,学习更加有深度的东西才会更加游刃有余,见知识知其源。就像是我们在高中的时候,在学习之后的考试,总会发现自己的知识面不全,总会发现一些知识盲点,但是我们始终不能达到最完美,但是我们也要在自己力所能及的地方做到90分。

  • 有很多的时候我们学习的只是知识的表层,我们要努力把“了解”变为“精通”。这个系列就是为了记录Java基础梳理。
  • 希望在学习的过程中不是把知识简单的记忆住,更重要的是做到“有趣”,怎么做到呢?将代码理解为构建世界的语言,我们所在的世界的一草一木都可以用代码解释,Java是面向对象的,也是存在于我们的生活的,Java生活就是这个道理。
  • 在以后可能会加一些拓展,
  • 学习理科、技术最依靠的是理解、模型,不断应用,在应用中理解,记忆,才能对知识的理解更上一层。

mybatis框架一对多其实实现比较简单,实际上就是一个对应关系,

首先,我们需要了解这个对应关系有什么用,然后在哪里写,最后就是直接上手代码应用了。

其中比较核心的地方就是mapper.xml文件和Model中实现一对多

  • 为什么我们要一对多??
  • 因为在Mapper.xml 里面的resultMap只有一个类进去,所以我们把一个对象和另一个对象进行关联,从而实现一对多。

Mapper.xml文件

<mapper namespace="com.hzyc.train.Model.trainMapper">
    <select id="showAllTrainTable" resultType="com.hzyc.train.Model.trainModel">
        select * from train ;    select>


    <resultMap id="rm66" type="com.hzyc.train.Model.ticketModel">
        <id column="id" property="id"/>
        <result column="trainid" property="trainid"/>
        <result column="tdate" property="tdate"/>
        <result column="sp" property="sp"/>
        <result column="ep" property="ep"/>
        <result column="kind" property="kind"/>
        <result column="seatype" property="seatype"/>
        <result column="tnum" property="tnum"/>
        <result column="snum" property="snum"/>
        <result column="price" property="price"/>
        <collection property="tM" ofType="com.hzyc.train.Model.trainModel">
            <id column="id" property="id"/>
            <result column="traincode" property="traincode"/>
            <result column="trainID" property="trainID"/>
            <result column="station" property="station"/>
            <result column="intime" property="intime"/>
            <result column="outime" property="outime"/>
            <result column="milage" property="milage"/>
        collection>
    resultMap>
    <select id="showTicket" resultMap="rm66">
            select * from train as tr,ticket as ti WHERE tr.trainid = ti.trainID and (tr.station = ti.ep or tr.station = ti.sp)and tr.milage!='0';    select>mapper>

两个类:

public class ticketModel {
    private String id;
    private String trainid;
    private String tdate;
    private String sp;
    private String ep;
    private String kind;
    private String seatype;
    private String tnum;
    private String snum;
    private String price;
    private List<trainModel> tM;

public class trainModel {
    private String id;
    private String traincode;
    private String trainID;
    private String station;
    private String intime;
    private int outime;
    private String milage;

首先这个是熟悉的测试代码

    public static void main(String[] args) {
        try {
            //取mapper(trainMapper)中的mapper对象
            Reader reader = Resources.getResourceAsReader("MB_config.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            SqlSession session = factory.openSession();
            trainMapper mapper = session.getMapper(trainMapper.class);

            List<ticketModel> ticketModels = mapper.showTicket();
            for (ticketModel model : ticketModels) {
                System.out.println(model);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

最后结果:
【Java复习Ⅲ 09】MyBatis框架_一对多

上一篇:nrf52832,nrf52840,cc2640R2F,cc2541,kw36,da14580用后总结


下一篇:51单片机~串口通信(讲解+代码)