Mybatis学习day03

一、学习内容

  • 1、mybatis中的连接池以及事务控制(原理部分了解,应用部分会用)
    mybatis中连接池使用及分析

    mybatis事务控制的分析

  • 2、mybatis基于XML配置的动态SQL语句使用(会用即可)

      mappers配置文件中的几个标签:
      <if>
      <where>
      <foreach>
      <sql>
    
  • 3、mybatis中的多表操作(掌握应用)

    一对多
    一对一
    多对多

二、连接池以及事务控制

1、连接池:

我们在实际开发中都会使用连接池。
因为它可以减少我们获取连接所消耗的时间。

2、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连接池

3、mybatis中的事务

什么是事务?

  • 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

事务的四大特性ACID

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

不考虑隔离性会产生的3个问题
解决办法:四种隔离级别

Mybatis通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚

4、mybatis中的多表查询

表之间的关系有几种:

  • 一对多
  • 多对一
  • 一对一
  • 多对多

举例

  • 用户和订单就是一对多
  • 订单和用户就是多对一
  • 一个用户可以下多个订单
  • 多个订单属于同一个用户
  • 人和身份证号就是一对一
  • 一个人只能有一个身份证号
  • 一个身份证号只能属于一个人

  • 老师和学生之间就是多对多
  • 一个学生可以被多个老师教过
  • 一个老师可以交多个学生

特例:
如果拿出每一个订单,他都只能属于一个用户。
所以Mybatis就把多对一看成了一对一。

mybatis中的多表查询

示例一:用户和账户
一个用户可以有多个账户
一个账户只能属于一个用户(多个账户也可以属于同一个用户)

步骤

  • 1、建立两张表:用户表,账户表
    让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加
  • 2、建立两个实体类:用户实体类和账户实体类
    让用户和账户的实体类能体现出来一对多的关系
  • 3、建立两个配置文件用户的配置文件;账户的配置文件
  • 4、实现配置:
    当我们查询用户时,可以同时得到用户下所包含的账户信息
    当我们查询账户时,可以同时得到账户的所属用户信息

示例二:用户和角色
一个用户可以有多个角色
一个角色可以赋予多个用户

步骤

  • 1、建立两张表:用户表,角色表
    让用户表和角色表具有多对多的关系。需要使用中间表,中间表中包含各自的主键,在中间表中是外键
  • 2、建立两个实体类:用户实体类和角色实体类
    让用户和角色的实体类能体现出来多对多的关系
    各自包含对方一个集合引用
  • 3、建立两个配置文件
    用户的配置文件
    角色的配置文件
  • 4、实现配置:
    当我们查询用户时,可以同时得到用户所包含的角色信息
    当我们查询角色时,可以同时得到角色的所赋予的用户信息

三、相关资料

链接:https://pan.baidu.com/s/1IeghP5STp4SsO0mSArZNoQ
提取码:sr83
复制这段内容后打开百度网盘手机App,操作更方便哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值