栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis核心组成部分之SQL映射文件揭秘详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis核心组成部分之SQL映射文件揭秘详解

前言

Mybatis真正强大的地方在于SQL映射语句,这也是它的魅力所在。

相对于它强大的功能,SQL映射文件的配置却非常简单,我上篇文章语句讲了Mybatis的搭建以及核心配置的讲解,接下来咱们就一起来看看Mybatis另一个重要的元素-SQL映射文件

首先先介绍一下SQL映射文件的几个顶级元素配置

顶级元素配置

1、Mapper:映射文件的根元素节点,只有一个属性namespace(命名空间),其作用如下

  • 用于区分不同的mapper,全局唯一
  • 绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,就可以不用写该接口的实现类,Mybatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL语句。因此namespace的命名必须要跟接口名同名

2、cache:配置给定命名空间引用缓存。

3、cache-ref:从其他命名空间引用缓存配置

4、resultMap:用来描述数据库结果集和对象的对象关系(键值对)

5、sql:可以重用的sql块,也可以被其他语句引用。

6、insert:映射插入的语句

7、update:映射更新的语句

8、delete:映射删除的语句

9、select:映射查询的语句

接下来我就逐一的为大家介绍

select:映射查询语句



select u.*,r.roleName from smbms_user u,smbms_role r
where u.userName like CONCAt('%',#{userName},'%')
and u.userRole=#{userRole} and u.userRole=r.id

上面便是咱们此次测试的查询映射语句了,这和我在上面说的映射语句区别不大,唯一大点的区别就在于参数类型,这的参数类型我换成了一个Map集合。

接下来就可以去测试了。

@Test
public void getUserList(){
SqlSession sqlSession=null;
List userList=new ArrayList();
try{
sqlSession=MyBatisUtil.createSqlSession();
Map userMap=new HashMap();
userMap.put("uName","赵");
userMap.put("uRole","3");
userList=sqlSession.getMapper(UserMapper.class).getUserListMap(userMap);
}catch(Exception e){
e.printStackTrace();
}finally{
MyBatisUtil,closeSqlSession(sqlSession);
}
for(User user:userList){
logger.debug("testGetUserList userCode:"+user.getUserCode()+"and userName:"+user.getUserName());
}
}

resultMap

接下来说说resultMap,我们为什么要用resultMap呢?

用小编的话说:当我们要使用的查询映射语句是需要关联多表的时候,那么一个实体类的字段就不够用了,比如User表中有一个部门ID,而部门ID又对应了部门表,我们想查询部门名称而不是查询部门ID,这时候我们就要在User实体类中加入一个部门名称属性,且该属性的类型为部门实体类,

到这我们就需要使用resultMap了