MyBatis使用总结

  • Mybatis的xml中resultmap不能有List类型,如果结果是多个,在Dao层把返回类型定义为List。
  • Mybatis可以传入List类型变量。
  • sqlmap原则上按照一个表一个文件建立,涉及到select多表时把语句放在主业务表文件中。
  • 查询的结果字段很少时可以用Map返回,比较多时用Bean返回,Bean中没有被复制的字段一般是不占用内存空间的,比如String,但是int之类的有默认值的基本类型还是会占用内存空间。不过还是推荐使用Bean返回,这样可以知道都返回了什么字段及它们的意义。
  • 一个insert/update/delete语句需要传入一个List时,直接将List传入sql,用foreach遍历,不要传入单一变量然后在程序中循环调用Dao,如果传入的List有超过百个元素,则此业务设计有问题。
  • MyBatis变量传入格式为#{ },iBatis为# #,此种传递变量的方式会自动在变量两边加上单引号,所以如果需要传入数据库表名、字段名或数字等非字符串格式的变量需使用${ }或$ $。
  • MyBatis可以直接定义Dao接口然后在sqlmap中使用namespace与Dao绑定来减少Dao实现的编写,iBatis则必须要编写Dao的实现。
  • 动态SQL语句MyBatis不用写\<dynamic>\</dynamic>,iBatis要写,而且两者的动态标签有所不同。
  • MyBatis的foreach循环时,如果传入的是单参数且参数类型是一个List的时候,collection属性值为list;如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array;如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,collection属性值为Map变量名,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key。
  • 调用存储过程时,使用select标签,语句用CALL 存储过程名