动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态 SQL 恰好解决了这一问题,可以根据场景动态的构建查询。 动态 SQL 只有几个基本元素,与 JSTL 或 XML 文本处理器相似,十分简单明
主要内容:示例实际应用中,由于多对多的关系比较复杂,会增加理解和关联的复杂度,所以应用较少。MyBatis 没有实现多对多级联,推荐通过两个一对多级联替换多对多级联,以降低关系的复杂度,简化程序。 例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系。可以使用一个中间表(订单记录表)将多对多级联转换成两个一对多的关系。 示例 下面以订单和商品(实现“查询所有订单以及每个订单对应
主要内容:示例,分步查询,单步查询在《 MyBatis一对一关联查询》一节中介绍了 MyBatis 如何处理一对一级联关系。但在实际生活中也有许多一对多级联关系,例如一个用户可以有多个订单,而一个订单只属于一个用户。同样,国家和城市也属于一对多级联关系。 在 MyBatis 中,通过 <resultMap> 元素的子元素 <collection> 处理一对多级联关系,collection 可以将关联查询的多条记录映射到一个 lis
主要内容:示例,分步查询,单步查询一对一级联关系在现实生活中是十分常见的,例如一个大学生只有一个学号,一个学号只属于一个学生。同样,人与身份证也是一对一的级联关系。 在 MyBatis 中,通过 <resultMap> 元素的子元素 <association> 处理一对一级联关系。示例代码如下。 在 <association> 元素中通常使用以下属性。 property:指定映射到实体类的对象属性。 column:指定表中对应的字
级联关系是一个数据库实体的概念,有 3 种级联关系,分别是一对一级联、一对多级联以及多对多级联。例如,一个角色可以分配给多个用户,也可以只分配给一个用户。大部分场景下,我们都需要获取角色信息和用户信息,所以会经常遇见以下 SQL。 在级联中存在 3 种对应关系。 一对多的关系,如角色和用户的关系。通俗的理解就是,一家软件公司会存在许多软件工程师,公司和软件工程师就是一对多的关系。 一对一的关系。每
主要内容:1. SQL 语句映射,2. 结果集映射,3. 关系映射为了简化 XML 的配置,MyBatis 提供了注解。我们可以通过 MyBatis 的 jar 包查看注解,如下图所示。 以上注解主要分为三大类,即 SQL 语句映射、结果集映射和关系映射。下面分别进行讲解。 1. SQL 语句映射 1)@Insert:实现新增功能 2)@Select:实现查询功能 3)@SelectKey:插入后,获取id的值 以 MySQL 为例,MySQL 在插入一条数据后
主要内容:resultMap元素的构成,使用Map存储结果集,使用POJO存储结果集,resultType和resultMap的区别resultMap 是 MyBatis 中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象。下面我们先从最简单的功能开始介绍。 现有的 MyBatis 版本只支持 resultMap 查询,不支持更新或者保存,更不必说级联的更新、删除和修改。 resultMap元素的构成 resultMap 元素还可以包含以下子元素
主要内容:delete 标签常用属性,传递多个参数MyBatis delete 标签用于定义 delete 语句,执行删除操作。当 MyBatis 执行完一条更新语句后,会返回一个整数,表示受影响的数据库记录的行数。 下面我们通过一个示例演示 delete 标签的用法。 1. 在 WebsiteMapper.xml 中使用 delete 标签添加一条 delete 语句,代码如下。 2. 在 WebsiteMapper 接口中增加一个 dele
主要内容:update 标签常用属性,传递多个参数MyBatis update 标签用于定义更新语句,执行更新操作。当 MyBatis 执行完一条更新语句后,会返回一个整数,表示受影响的数据库记录的行数。 下面我们通过一个示例演示 update 标签的用法。 1. 在 WebsiteMapper.xml 中添加以下更新语句,代码如下。 2. 在 WebsiteMapper 接口中增加一个 updateWebsite() 方法,代码如下。 参数为
主要内容:insert 标签常用属性,传递多个参数,主键(自动递增)回填,自定义主键MyBatis insert 标签用来定义插入语句,执行插入操作。当 MyBatis 执行完一条插入语句后,就会返回其影响数据库的行数。 下面通过一个示例演示 insert 标签的具体用法。 1. 修改 WebsiteMapper.xml,增加插入语句,代码如下。 2. 在 WebsiteMapper 接口中定义一个 add() 方法,代码如下。 参数为 Sting 类型的字符串;返回值为 int
主要内容:select标签常用属性,传递多个参数在 MyBatis 中,select 标签是最常用也是功能最强大的 SQL 语言,用于执行查询操作。 select 示例语句如下。 以上是一个 id 为 selectAllWebsite 的映射语句,参数类型为 string,返回结果类型为 Website。 执行 SQL 语句时可以定义参数,参数可以是一个简单的参数类型,例如 int、float、String;也可以是一个复杂的参数类型,例如 J
主要内容:SqlSession发送SQL,Mapper接口发送 SQL,区别本节主要介绍 MyBatis 执行 SQL 语句的两种方式和它们的区别。 MyBatis 有两种执行 SQL 语句的方式,如下: 通过 SqlSession 发送 SQL 通过 SqlSession 获取 Mapper 接口,通过 Mapper 接口发送 SQL SqlSession发送SQL 有映射器之后就可以通过 SqlSession 发送 SQL 了。我们以 getWebsite 这条 SQ
主要内容:XML实现映射器,注解实现映射器,MyBatis 映射器的主要元素映射器是 MyBatis 中最重要的文件,文件中包含一组 SQL 语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射 SQL 语句。 映射器由 Java 接口和 XML 文件(或注解)共同组成,它的作用如下。 定义参数类型 配置缓存 提供 SQL 语句和动态 SQL 定义查询结果和 POJO 的映射关系 映射器有以下两种实现方式。 通过 XML 文件方式实现,比如我们在 mybatis
主要内容:properties标签,settings标签,typeAliases标签,typeHandlers标签,environments标签,mappers标签在《 第一个MyBatis程序》一节中,我们编写了 MyBatis 的配置文件 mybatis-config.xml,在该文件中,您可以配置各种元素。 MyBatis 配置文件的结构如下。 mybatis-config.xml 文件中的元素节点是有一定顺序的,节点位置必须按以上位置排序,否则会编译错误。 下面介绍 XML 配置文件中的
主要内容:SqlSessionFactoryBuilder,SqlSessionFactory,SqlSessionMyBatis 有三个基本要素: 核心接口和类 MyBatis核心配置文件(mybatis-config.xml) SQL映射文件(mapper.xml) 下面首先介绍 MyBatis 的核心接口和类,如下所示。 每个 MyBatis 应用程序都以一个 SqlSessionFactory 对象的实例为核心。 首先获取 SqlSessionFactoryBuilder 对象,可以