Mybatis连接池_动态sql语句_多表查询实现

Mybatis连接池

Mybatis中的连接池
	Mybatis连接池提供了3种方式的配置:
		配置的位置:
			主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。
		type属性的取值:
			POOLED:采用传统的javax.sql.DataSource规范中的连接池,Mybatis中有针对规范的实现
			UNPOOLED:采用传统的获取连接的方式,虽然也实现了Javax.sql.DataSource接口,但是并没有使用连接池的思想
			JNDI(课外了解):采用服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到的DataSource是不								一样的。  注意:如果不是web或者maven的war工厂,是不能使用的
					我们课程使用的tomcat服务器,采用的连接池是dbcp连接池
Mybatis中没有使用C3P0或者Druied连接池技术,而是自己实现了一套Mybatis专用的连接池,
只需要在Datasource中根据自己的需要配置相应的type属性即可,一般情况下使用POOLED属性。

1.4 Mybatis中动态sql语句

if标签

<!-- 例如条件查询语句
	 在添加条件之前先判断传入的参数是否存在,存在则添加条件 
	 test属性:
			 填写if的条件
-->
select * from user where 1=1 
<if test="userName != null">
	and username=#{userName}
</if>

where标签

<!-- 如果条件太多,此时可使用where标签
	 <where/>可以自动处理第一个and
 	 使sql语句更清晰、简洁
-->

foreach标签

<!-- sql语句:select字段from user where id in(?)
	 <foreach>标签用于遍历集合,它的属性:
		collection:代表要遍历的集合元素,注意编写时不要写#{}
 		open:代表语句的开始部分
		close:代表结束部分
		item:代表遍历集合的每个元素,生成的变量名
		sperator:代表分隔符
-->

mark

抽取重复的sql语句

<!-- 在配置文件中配置该语句
		语句中的分号可以忽略
 -->

<sql id="defaultUser">
	select * from user 
</sql>

<!-- 具体使用方法 -->
在select或者其他增删改标签中使用<include>标签引入
    <include refid="defaultUser"></include>

1.5 Mybatis中的多表查询

概念引入

我们之前学过的表之间的关系:
		一对多
		多对一	
		一对一	
		多对多
这里不多赘述,我们聚焦在一对多关系中,
例如:单个用户与订单
这是一个典型的一对多关系,一个用户明显可以拥有多个订单,当
我们取出订单中每个数据项与用户形成对应关系时,这个时候每个
订单项与用户是一对一的关系。
综上所属,Mybatis处理多对一或者一对多的时候应用了上述方法

一对一查询(多对一)

多表查询涉及的知识点比较多,这里举例进行说明

mark

mark

这里讲解一下小标题:
通过上面需求可知,我们的一对一其实是表的数据项的一对一关系,
而多对一指的是表之间的关系

通过Mybatis,我们有俩个办法进行该多对一的多表查询操作

方式一

通过定义实体类AccountUser的方式存储查询结果

定义账户信息的实体类

markmark

编写sql语句

mark

定义AccountUser类

markmark

定义持久层dao接口

markmark

定义AccountDao.xml

mark

小结

mark

方式二

修改Account类

markmarkmark

修改AccountDao接口中的方法

markmark

重新定义AccountDao.xml文件

mark

一对多查询

markmarkmarkmarkmarkmark

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

mark

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

markmark

多对多查询

markmarkmark

业务要求以及实现sql

mark

业务要求以及实现sql

markmarkmarkmarkmark

编写Role持久层接口

mark

编写映射文件

markmark

反过来,我们根据上面的步骤也可以实现User到Role的多对多关系

mark

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页