【SQL】Left join...on左连接,实体中插入实体;

一、实际意义

我们在一个Java实体对象(姑且叫方便面)中插入另一个对象(姑且叫调料包),为的是在打开方便面的时候,能够获取到调料包;我们必须把调料包封装到方便面中;

二、Java实体(pojo)

这里,首先我们需要在Java实体中,创建一个调料包类的局部变量(即调料包的属性和方法)
【SQL】Left join...on左连接,实体中插入实体;

这里,蓝色半透明黑背景的里的,就是新加入的调料包部分(包含Train类型的trainIninfo实体,和get,set两套方法);

三、数据库SQL语句(mybatis框架,mysql数据库)

①映射
接下来,我们要在数据库中去告诉仓库管理员,等会我的给你一个方便面的空袋子,里面还有3个调料包的小空袋子,你看到这1大3小,共计4个袋子的时候,你得在大袋子里装方便面,在3个小袋子里分别装3种调料;接下来,我们来用数据库语言告诉她:
【SQL】Left join...on左连接,实体中插入实体;

这里是映射部分,告诉数据库表中的栏目(column)对应Java中的什么属性(property),jdbcType是什么,更详细的,你可以告诉她,Java中的属性是什么(即javaType);ofType表示,你插入的这个调料包,有没有类型,如果有,最好写上;这里可以不写所有的调料包的属性,只写我需要的信息即可,比如,我这里只需要一个end_date;写id是因为,这里需要用过调料包的id和方便面的train_id关联;

这里还需要注意下:这里千万不要起重名的,比如我原来的:
【SQL】Left join...on左连接,实体中插入实体;

这里就很尴尬,因为不是统一设计的,还有别的同事设计的字段,以后像这种容易起冲突的字段,如果不是公司统一设计,最好加上些个性化设计,避免撞车;两个字段都有endDate;这里选择的方法是修改其中一个字段;

然后就是查询内容的sql了:

②查询:
【SQL】Left join...on左连接,实体中插入实体;

A.这里left join是左连接,左连接是“表”级别的;
B. on表示条件,这里的条件是:traininfo.train_id=manage.id