- mybatis:sql语句需要多个不同类型的参数
- resultMap子标签id的column属性易错点
- 按照查询到的列有没有重复列名分为标准连接和自然连接
- 按照查询到的行是否有两表不完全匹配的行分为内连接和外连接
- 内连接(也叫等值连接)
- 外部连接:有时候需要包含匹配字段不能完全匹配的那些行
sql语句需要多个甚至多个不同类型参数时,可以使用parameterMap,parameterList,新建一个包含这些参数的类,也可以使用@Param.
原先不确定@Params这种方式数据能不能传不到sql里面,今天从执行的sql语句后中发现sql语句查出来数据了.说明传多个不同类型的参数时,可以用@Params.然后正确定位bug在resultMap里面.
resultMap子标签id的column属性易错点resultMap是对resultType的"封装".用法是
...
下图中的sql语句,查询结果中的列名是ID,NAME等,而不是s.ID,s.STU_ID等,因此resultMap中的column应该写ID,NAME等查询结果中的列名.因为resultMap是定义从查询结果映射到实体类的对应关系,不是从源数据表映射到实体类的.
应用:在sql中为字段起别名,就可以使用别名来定义resultMap中的column.
首先,在联结两个表时,实际上做 的是将第一个表中的每一行与第二个表中的每一行配对。
自然连接:排除多次出现的列,使用通配符和"表名.列名"来明确要查询的列.
SELECt s.*, c.ID AS cid, c.NAME AS cname FROM student AS s RIGHT OUTER JOIN class AS c ON s.CLASS_ID = c.ID;
标准连接:与之对应的,查询结果中有相同字段名.
SELECt * FROM student AS s RIGHT OUTER JOIN class AS c ON s.CLASS_ID = c.ID;按照查询到的行是否有两表不完全匹配的行分为内连接和外连接
内连接(也叫等值连接)自连接:在单条语句中连接自身,本质上是内连接的一种特殊情况.
两表进行匹配的字段要完全匹配才会在查询结果中作为一条记录.
SELECt * FROM student AS s INNER JOIN class AS c ON s.CLASS_ID = c.ID;外部连接:有时候需要包含匹配字段不能完全匹配的那些行
左外连接
SELECt * FROM student LEFT OUTER JOIN class ON student.CLASS_ID = class.ID
右外连接
SELECt * FROM student RIGHT OUTER JOIN class ON student.CLASS_ID = class.ID;
全外连接
mysql 8.0.19版本(当前最新)不支持full outer join 但可以通过union和左右外连接来实现
SELECt * FROM student LEFT OUTER JOIN class ON student.CLASS_ID = class.ID UNIOn SELECt * FROM student RIGHT OUTER JOIN class ON student.CLASS_ID = class.ID;



