龙空技术网

Mybatis知识day03 连接池&动态SQL&多表查询

御天说书 541

前言:

而今小伙伴们对“如何查看sql中的数据源”大概比较注重,同学们都需要知道一些“如何查看sql中的数据源”的相关文章。那么小编也在网上收集了一些对于“如何查看sql中的数据源””的相关文章,希望同学们能喜欢,大家快快来了解一下吧!

一、Mybatis 连接池

1.1 Mybatis 的连接池技术采用的是自己的连接池技术。在 Mybatis的 SqlMapConfig.xml配置文件中,通过来<dataSource type="pooled">来实现 Mybatis中连接池的配置。

1.2 Mybatis 连接池的分类:

UNPOOLED:不使用连接池的数据源

POOLED:使用连接池的数据源

JNDI:使用 JNDI 实现的数据源

在这三种数据源中,我们一般采用的是 POOLED 数据源

1.3 Mybatis 中数据源的配置:

二、 Mybatis 的事务控制

2.1 Mybatis 中事务提交方式:Mybatis中事务的提交方式,本质上就是调用JDBC的 setAutoCommit()来实现事务控制。

2.2 Mybatis 自动提交事务的设置(不常用,了解):

注意事项:我们发现,此时事务就设置为自动提交了,同样可以实现CUD操作时记录的保存。虽然这也是一种方式,但就编程而言,设置为自动提交方式为 false 再根据情况决定是否进行提交,这种方式更常用,因为我们可以根据业务情况来决定提交是否进行提交。

三、Mybatis 的动态 SQL 语句

3.1 动态 SQL 之<if>标签:

3.1.1 使用举例:

持久层 Dao 接口:

持久层 Dao 映射配置:

注意: <if>标签的 test 属性中写的是对象的属性名,如果是包装类的对象要使用 OGNL 表达式的写法。 另外要注意 where 1=1 的作用~!

测试:

3.2 动态 SQL 之<where>标签

3.2.1 为了简化上面 where 1=1 的条件拼装,我们可以采用标签来简化开发:

持久层 Dao 映射配置:

3.3 动态标签之<foreach>标签

3.3.1 需求:当传入多个 id 查询用户信息时,就要将一个集合中的值,作为参数动态添加进来。

3.3.2 代码实现:

在 QueryVo 中加入一个 List 集合用于封装参数

在持久层 Dao 接口定义方法:

持久层 Dao 映射配置:

编写测试方法

3.4 Mybatis 中简化编写的 SQL 片段:Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的。

3.4.1 举例:

定义代码片段:

引用代码片段:

四、 Mybatis 多表查询之一对多

4.1 本次案例主要以最为简单的用户和账户的模型来分析Mybatis多表关系。用户为 User 表,账户为Account表。一个用户(User)可以有多个账户(Account)。

4.2 一对一查询(多对一):

4.2.1 需求: 查询所有账户信息,关联查询下单用户信息。 因为一个账户信息只能供某个用户使用,所以从查询账户信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的账户信息则为一对多查询,因为一个用户可以有多个账户。

4.2.2 定义账户信息的实体类

4.2.3 编写 Sql 语句:实现查询账户信息时,也要查询账户所对应的用户信息。

4.2.4 定义 AccountUser 类

为了能够封装上面 SQL 语句的查询结果,定义 AccountUser类中要包含账户信息同时还要包含用户信息,所以我们要在定义 AccountUser 类时可以继承 Account 类。

4.2.5 定义账户的持久层 Dao 接口:

4.2.6 定义 AccountDao.xml 文件中的查询配置信息:

4.2.7 创建 AccountTest 测试类

4.2.8 定义专门的类作为输出类型,其中定义了 sql 查询结果集所有的字段。此方法较为简单,企业中使用普遍。

4.3 一对多查询:

4.3.1 需求: 查询所有用户信息及用户关联的账户信息。

分析: 用户信息和他的账户信息为一对多关系,并且查询过程中如果用户没有账户信息,此时也要将用户信息查询出来,我们想到了左外连接查询比较合适。

4.3.2 编写 SQL 语句:

4.3.3 用户持久层 Dao 接口中加入查询方法:

4.3.4 用户持久层 Dao 映射文件配置:

4.3.5 测试方法

五、Mybatis 多表查询之多对多

5.1 用户与角色的关系模型:

5.2 业务要求及实现 SQL:

5.2.1 需求:实现查询所有对象并且加载它所分配的用户信息。

分析:查询角色我们需要用到Role表,但角色分配的用户的信息我们并不能直接找到用户信息,而是要通过中 间表(USER_ROLE 表)才能关联到用户信息。

5.2.2 实现的 SQL 语句:

5.3 编写角色实体类

5.4 编写 Role 持久层接口

5.5 编写映射文件:

5.6 编写测试类

标签: #如何查看sql中的数据源 #mybatis 自动提交 #mybatis自动提交设置 #多个sql查询结果一起输出