1.#{}表示一个占位符,接收输入参数,类型可以是简单类型、hashmap、pojo。${}表示一个拼接符号,类型也可以是简单类型、hashmap、pojo,但是有一点区别,如果是简单类型,#{}中可以写入任何名称,而${}中只能写value。${}不能防止sql注入,因此不建议使用。
2.SqlSession是线程不安全的,因此应该作为方法的局部变量使用,而不要定义成类的成员变量。
3.如果使用mapper自动代理生成的方式,要注意在map.xml中namespace等于mapper接口的全路径名。
4.mapper自动代理对象是根据mapper接口方法中定义的返回值类型,确定是调用selectOne返回单个对象,还是selectList返回集合对象。
5.如果使用resultMap作为statement的输出类型,需要在配置文件中先定义resultMap,如果定义的resultMap在其它mapper配置文件中,引用时需要在前面加上namespace。
6.定义的sql片段中,最好不要加入<where>标签,以便于sql片段的重用。在引用sql片段时,如果定义的sql片段在其它mapper配置文件中,同样要在前面加上namespace。
7.如果使用mapper代理的方式。可以通过mapper接口方式<mapper class="接口类名">或者包扫描的方式<package name="包名">加载映射文件,需要遵守以下规范:mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中。
8.如果使用注解的方式,需要通过通过mapper接口<mapper class="*.*">的方式加载配置。
9.查询出来的结果只有一行且一列,可以使用简单类型进行输出映射。
10.使用@Mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。否则需要使用@MapperScan指定扫描路径。