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(); } }
最后结果: