SQL映射文件
mapper:映射元素的根元素节点,只有一个属性namespace(命名空间)
mapper作用:
1.区分不同的mapper,全局唯一
2.绑定dao接口,即面向接口编程,当绑定接口以后不用写接口的实现类,mybatis会通过限定名来找到对应的mapper配置来执行SQL语句,因此namespace命名
必须和接口同名
cache:配置给定命名空间的缓存
cache-ref:从其他命名空间引用缓存配置
resultmap:用来描述数据库结果集和对象的对应关系
SQL:可以重用的语句块,也可以被其他语句引用
insert:添加语句
update:更新语句
delete:删除语句
select:查询语句
自动映射
<settings><!--自动映射--><setting name="autoMappingBehavior" value="FULL"/></settings>
多参数
- 注解
接口
User findBynameAndId(@Param(“id”) Integer id,@Param(“name”) String name);
mapper
测试类
User lis = userDao.findBynameAndId(1, “lis”);
- map集合
接口
User findBynameAndId2(_Map _map);
mapper
测试类
_Map _map=new HashMap();
map.put(“id”,1);
map.put(“name”,”lis”);
User lis = userDao.findBynameAndId2(map);
- 普通带入参数
接口
User findBynameAndId(Integer id,String name);
mapper
测试类
User lis = userDao.findBynameAndId(1, “lis”);
高级结果映射关系
resultmap的配置
- 属性
id:resultmap的唯一标识
type:表示resultmap的映射结果类型(通常是java实体类)
- 子节点
id:一般对应数据库中的该行的主键id,设置此项可以提升mybatis的性能
result:映射到javabean中的某个简单类型属性
association处理一对一关联关系
association:映射到javabean的某个”复杂类型” 属性
association属性:
javatype:完整java类名或别名
propertry:映射数据库列的实体对象的属性
result
property:映射数据库列的实体对象的属性
column:数据库列名或别名
数据库实体:
student
teacher
映射关系
<resultMap id="resutmap" type="entity.Student"><result property="tid" column="sid"/><result property="name" column="sname"/><association property="teacher" javaType="entity.Teacher"><result property="name" column="tname"/><result property="id" column="tid"/></association></resultMap><select id="findAll" resultMap="resutmap">select s.tid sid, s.name sname,t.name tname,t.id tidfrom student s,teacher twhere s.tid=t.id</select>
collection处理一对多关系
collection属性:
oftype:完整java类名或别名,即集合所包含的类型
property:映射数据库列的实体对象属性
dept
