mapper.xml映射文件
mapper元素:根节点只有一个属性namespace(命名空间)作用:
2:绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完全限定名来查找对应的mapper配置,执行SQL语句,因此namespa
namespace属性的要求:
1:namespace的命名必须和某个DAO接口同名,同属于DAO层,
故代码结构上,mapper映射文件个接口必须放在同一个包下。
2:在不同的mapper文件中,元素的id是可以相同的,MyBatis
是通过namespace和子元素的id联合区分的。接口中的方法和映射文件的SQL中的id一一对应。
-----------------------------------------------------
resultMap的应用
==================================
其实返回的都是Map集合,当resultType返回user时候,MyBatis通过setter()方法自动进行关系映射赋值。返回resultMap时,则需要手动赋值,更自由。二者不能同时存在
==================================
属性: aotuMappingBehavior
有内部嵌套(collection,association)的除外
==================================
id:对应数据库中该行的主键id,设置此项可提高MyBatis的性能
association:映射到javaBean的某个复杂类型属性如javaBean
id:同resultMap的id一样对应该javaBean表的主键
collection:映射到javaBean的某个复杂类型属性,例如集合
ofType : 完整的java类名或者别名(集合所包含的类型)
resultMap : 应用外部的resultMap,代码重用
id:同resultMap的id一样对应该javaBean表的主键
column:数据库列名或者别名
2:parameterType:传入的SQL语句的参数类型的限定名或别名
基础数据类型:int String Date等, 只能传入一个,通过#{参数名}来获取传入值
复杂数据类型:java实体类,Map集合通过#{属性名}或#{Map的Key}获取传入值
3:resultType:SQL语句的返回值的完整类名或别名
2,3都支持内建的别名,大小写不区分。可以参考P37别名表#{userName}:userName和接口方法中传入的参数名是一样的
2:parameterType:传入的SQL语句的参数类型的限定名或别名
1:默认返回影响的行数,所以接口方法中的返回值类型要设置为int类型最好不要返回boolean。
2:insert,update,delete元素是没有返回属性resultType只有查询操作select才有相应的指定。
2:parameterType:传入的SQL语句的参数类型的限定名或别名
同insert用法相同,没有set赋值的属性,在表中为NULL显示,因此用参数入参可以解决此问题
附:超过4个参数最好封装为对象入参,多参入参,不写入参类型 参数固定的,最好直接多参数入参.int类型的入参都要使用包装类.
复杂数据类型:1:JAVA对象 2:Map集合 3:List集合
2:parameterType:传入的SQL语句的参数类型的限定名或别名
2:在Mapper XML文件中设置缓存,默认情况下:未开启
3:在Mapper XML文件配置支持cache后,需要对个别查询做调
<select id="selectALL" resultType="Emp" useCache="true">
----------------------------------
实际上,MyBatis的缓存很少用到,当面对一定规模的数据量时,内置的cache方式也派不上用场,我们一般会选择OS cache,mamer cache等专门的缓存服务器来做。因此,MyBatis专心做的还是SQL映射!