1. 前言

关系数据库和SQL都是经过时间考验,都提供数据储蓄机制。不像其它的ORM框架,如Hibernate,MyBatis鼓励使用SQL,而对于开发者来说,SQL的执行是被隐藏。同时MyBatis消除了许多繁琐的配置模板。

在代码中使用嵌套的SQL语句是一个不好的做法,同时在后期维护也很难。而MyBatis配置SQL的声明使用映射XML的文件或注解,这样做有一定的好处。在这一章节中,笔者将会向大家介绍使用映射的XML文件配置SQL的语句,你将会学习到如下的几个内容:

1)        映射的XML文件配置和映射的接口定义

2)        映射的声明:INSERT、UPDATE、DELETE和SELECT

3)        关于关系型映射的配置

4)        动态的SQL语言

Let’s go! 开启这章的学习。

2. xml文件映射与映射接口

在前面的章节中,我们学习了如何通过MapperXML的文件来声明,和如何通过调用SqlSession的对象来。让我们现在来看一下findStudentById是如何在配置文件StudentMapper.xml的文件中声明的。这个文件是在com.owen.mybatis.mappers的包中。运用下面的代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.owen.mybatis.mappers.StudentMapper">
<select id="findStudentById" parameterType="int"
resultType="Student">
select stud_id as studId, name, email, dob from Students where
stud_id=#{studId}
</select>
</mapper>

我们可以通过下面的代码来调用上面的声明:

public Student findStudentById(Integer studId)
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try
{
Student student =
sqlSession.selectOne("com.owen.mybatis.mappers.StudentMapper.
findStudentById", studId);
return student;
} finally {
sqlSession.close();
}
}

就像上面的调用声明映射一样,我们只需要使用字符串(namespace和statements id)来调用就行了,但是这样也是容易出错的。你需要确保传递的参数是有效的,并通过检查它在映射XML文件中的变量,然后将结果有效地返回。

MyBatis通过使用Mapper的接口,来实现更好的调用映射声明。一旦我们在Mapper XML的文件中配置了映射的声明,我们就可以创建一个Mapper的接口,这个接口的函数与Mapper XML的文件中定义的声明ID一样,放入参数和返回类型。

在前面的StudentMapper.xml的文件中,我们可以创建一个StudentMapper.java的接口,如下所示:

package com.owen.mybatis.mappers;
public interface StudentMapper
{
Student findStudentById(Integer id);
}

在StudentMapper.xml的文件中,类的命名空间要与StudentMapper接口的包名com.owen.mybatis.mappers.StudentMapper.xml的一样。当然,声明的id、parameterType和returnType的值要与StudentMapper接口中的方法名、参数声明的类型、返回的类型保持一致。

运用下面的Mapper接口,你可以调用的映射声明如下:

public Student findStudentById(Integer studId)
{
SqlSession sqlSession = MyBatisUtil.getSqlSession();
try {
StudentMapper studentMapper =
sqlSession.getMapper(StudentMapper.class);
return studentMapper.findStudentById(studId);
} finally {
sqlSession.close();
}
}

MyBatis之使用XML配置SQL映射(一)相关推荐

  1. Mybatis基于XML配置SQL映射器(一)

    Durid和Mybatis开发环境搭建 SpringBoot搭建基于Spring+SpringMvc+Mybatis的REST服务(http://www.cnblogs.com/nbfujx/p/76 ...

  2. Mybatis基于XML配置SQL映射器(二)

    Mybatis之XML注解 之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件: 下面我们将详细的讲解具体内容 首先我们新建映射接口文档  sysUse ...

  3. mybatis入门之XML配置 idea版(含目录结构与sql语句)

    mybatis入门之XML配置 maven目录结构 1.创建一个maven项目 2. 配置pom文件 3.创建数据库及数据库表 4.java类和接口 4.1 User.java实体类 4.2.User ...

  4. mybatis逆向工程mbg.xml配置模板( MyBatis Generator)

    mybatis逆向工程mbg.xml配置模板( MyBatis G在数据库中建立好表就可以进行逆向工程配置了,配置逆向工程,只需要两步: (1)在项目目录下配置mbg.xml文件,(2)在测试类运行一 ...

  5. mybats实操-前期入门写法分析,SqlSessionFactory 获取SqlSession, 系统核心配置文件 mybatis-config.xml,SQL映射XML文件,MyBatis缓存

    标题 偏向这一块的配置 打个预防针 尽量别用中文路径 尤其配置文件 1.导入数据库(smbms_db.sql) 下载maven并且配置环境变量 去IDEA配置好maven 以后maven项目直接用 m ...

  6. SpringBoot项目集成Mybatis Plus(四)SQL映射文件

    实际使用中,都会用到自定义SQL查询语句,并且需要支持分页,因为之前在项目中配置了分页插件,所以用起来很简单. 例如,定义接口getList,接口参数为分页参数和查询条件, @RequestMappi ...

  7. MyBatis(3):SQL映射

    前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: 1 2 3 4 5 6 7 8 9 10 11 <?xml ...

  8. MyBatis 之 SqlMapConfig.xml 配置

    2019独角兽企业重金招聘Python工程师标准>>> 下面介绍 MyBatis 的核心配置文件 SqlMapConfig.xml 的配置实用: SqlMapConfig.xml 中 ...

  9. 【MyBatis笔记】02-MyBatis配置SQL打印

    MyBatis 配置SQL打印 在 SqlMappingConfig.xml 中配置以下代码: <!--配置sql打印--> <settings><setting nam ...

  10. 手写自己的MyBatis框架-支持注解配置SQL

    定义了一个@Select 注解,加在方法上. 在Configuration 构造函数中的parsingClass() 中解析, 保存在mappedStatements 中(一个HashMap). 注意 ...

最新文章

  1. 2022-2028年中国电商物流行业投资分析及前景预测报告
  2. Android程序的反编译对抗研究
  3. cmd命令运行jar包
  4. 新手入门深度学习 | 2-2:结构化数据建模流程示例
  5. uni-app echart 使用mpvueEcharts踩坑与流程
  6. 中软国际 问题一php的优缺点
  7. 工作225:当前导致name报错
  8. 智能一代云平台(四十二):关于异常的一些事
  9. ld 命令看内存布局 汇编级调试
  10. 微信小店开发(1) 获取分类
  11. 怎么隐藏计算机磁盘分区,如何隐藏硬盘分区 隐藏磁盘分区
  12. 广外专版-msn聊天记录查看器
  13. STM32F103RCT+TJA1050+USBCAN盒做can通讯
  14. 1-2 移动均线交叉策略1
  15. 修改const指针所指向的值
  16. 色温,色阶,色调,色调
  17. 华科计算机学院新生家长群是多少,关于开通2020级本科和研究生新生群及新生家长群的公告...
  18. 黑苹果alc269声卡仿冒id_10.10中我的ALC269VC依旧无声?学习并尝试制作了仿冒声卡,依然无声。...
  19. BIMer心得 | BIM+机电装配式应用
  20. Radware推SDN安全应用套件DefenseFlow

热门文章

  1. MVC 添加Area
  2. Handlebars 和 angularjs 之间的区别
  3. 小组成员的github地址
  4. Servlet连接数据库
  5. 吴昊品命令行解释程序 Round 2 —— 一个带括号的四则运算表达式的解释器(逆波兰式RPN)...
  6. HCIE RS 全套笔记整理
  7. zabbix详解(十五)——zabbix proxy配置实战
  8. C++程序设计(三:可视化)
  9. Spring Cloud云架构-Restful 基础架构
  10. SpringBoot+Shiro学习(七):Filter过滤器管理