SQL映射文件

mapper:映射元素的根元素节点,只有一个属性namespace(命名空间)
mapper作用:
1.区分不同的mapper,全局唯一
2.绑定dao接口,即面向接口编程,当绑定接口以后不用写接口的实现类,mybatis会通过限定名来找到对应的mapper配置来执行SQL语句,因此namespace命名
必须和接口同名
cache:配置给定命名空间的缓存
cache-ref:从其他命名空间引用缓存配置
resultmap:用来描述数据库结果集和对象的对应关系
SQL:可以重用的语句块,也可以被其他语句引用
insert:添加语句
update:更新语句
delete:删除语句
select:查询语句

自动映射

  1. <settings>
  2. <!--自动映射-->
  3. <setting name="autoMappingBehavior" value="FULL"/>
  4. </settings>

多参数

  1. 注解

接口
User findBynameAndId(@Param(“id”) Integer id,@Param(“name”) String name);
mapper

测试类
User lis = userDao.findBynameAndId(1, “lis”);

  1. map集合

接口
User findBynameAndId2(_Map _map);
mapper

测试类
_Map _map=new HashMap();
map.put(“id”,1);
map.put(“name”,”lis”);
User lis = userDao.findBynameAndId2(map);

  1. 普通带入参数

接口
User findBynameAndId(Integer id,String name);
mapper

测试类
User lis = userDao.findBynameAndId(1, “lis”);

高级结果映射关系

resultmap的配置

  1. 属性

id:resultmap的唯一标识
type:表示resultmap的映射结果类型(通常是java实体类)

  1. 子节点

id:一般对应数据库中的该行的主键id,设置此项可以提升mybatis的性能
result:映射到javabean中的某个简单类型属性

association处理一对一关联关系

association:映射到javabean的某个”复杂类型” 属性
association属性:
javatype:完整java类名或别名
propertry:映射数据库列的实体对象的属性
result
property:映射数据库列的实体对象的属性
column:数据库列名或别名
数据库实体:
student
image.png
teacher
image.png
映射关系

  1. <resultMap id="resutmap" type="entity.Student">
  2. <result property="tid" column="sid"/>
  3. <result property="name" column="sname"/>
  4. <association property="teacher" javaType="entity.Teacher">
  5. <result property="name" column="tname"/>
  6. <result property="id" column="tid"/>
  7. </association>
  8. </resultMap>
  9. <select id="findAll" resultMap="resutmap">
  10. select s.tid sid, s.name sname,t.name tname,t.id tid
  11. from student s,teacher t
  12. where s.tid=t.id
  13. </select>

collection处理一对多关系

collection属性:
oftype:完整java类名或别名,即集合所包含的类型
property:映射数据库列的实体对象属性
dept
image.png