使用mybatis操作数据库,如果出现异常,修改后需要重启服务器。而将sql语句直接存在数据库中,先从数据库中读取然后再执行,就算修改sql语句,只需清缓存,不用重启服务器。考虑到这点。一次项目中,将sql语句直接存在数据库中,通过各种表和字段的拼接,得到最终的sql语句
pick up:
select * from t1 left join t2 on t1.id=1;

此时t1表id值为2的数据也会显示出来。但t2表的数据都为null。如果需要t1表只显示id为1的数据
可以在on后面继续跟where语句
如:select * from t1 left join t2 on t1.id=1 where t1.id = 1;

这样t1表中id为2的数据不会显示。
或者使用 inner join
如:select * from t1 inner join t2 on t1.id=1;

总结:left join 会将主表的所有数据查出来,子表后面的on不能将主表的过滤,除非再后面添加where语句
inner join 子表后跟的on能够过滤主表
探讨了在MyBatis中直接在数据库存储SQL语句的优势,对比服务器重启问题,及LEFT JOIN与INNER JOIN的区别与应用场景。
2167

被折叠的 条评论
为什么被折叠?



