Mybatis(一)

简介: Mybatis(一)

MyBatis 框架

第一章 框架的概述

1.三层架构

mvc:web开发中,使用mvc架构模式。 m:数据, v:视图, c:控制器。


c控制器: 接收请求,调用service对象,显示请求的处理结果。 当前使用servlet作为控制器


v视图: 现在使用jsp, html,css,js。 显示请求的处理结果,把m中数据显示出来。


m数据: 来自数据库mysql, 来自文件,来自网络


mvc作用:


1)实现解耦合。


2)让mvc 各负其职。


3)使的系统扩展更好。更容易维护。


三层架构:


1.界面层(视图层):接收用户的请求,调用service, 显示请求的处理结果的。 包含了jsp,html,servlet等对象。 对应的包controller,


2.业务逻辑层:处理业务逻辑, 使用算法处理数据的。 把数据返回给界面层。 对应的是service包,和包中的很多的XXXService类。 例如: StudentService , OrderService, ShopService


3.持久层(数据库访问层):访问数据库,或者读取文件,访问网络。获取数据。 对应的包是dao。 dao包中很多的StudentDao, OrderDao, ShopDao等等。

2. 三层架构请求的处理流程

用户发起请求---->界面层----->业务逻辑层---->持久层---->数据库(mysql)

3. 为什么要使用三层?

1,结构清晰、耦合度低, 各层分工明确

2,可维护性高,可扩展性高

3,有利于标准化

4,开发人员可以只关注整个结构中的其中某一层的功能实现

5,有利于各层逻辑的复用

4. 三层架构模式和框架

每一层对应着一个框架

1)界面层—SpringMVC框架

2)业务层—Spring框架

3)持久层—MyBatis框架

5 .框架

  1. 什么是框架(framework)

框架:就是一个软件, 完成了部分的功能。 软件中的类和类之间的方法调用都已经规定好了。 通过这些可以完成某些功能。 框架看做是模版。

框架是可以升级的,改造的。 框架是安全的。

框架是对某一个方面有用的,不是全能的。

6. 框架解决的问题

1)框架能实现技术的整合。

2)提供开发的效率。 降低难度。

7. jdbc访问数据库的优缺点

优点:

  1. 直观,好理解

缺点:

  1. 创建很多对象 Connection ,Statement, ResultSet
  2. 注册驱动
  3. 执行sql语句
  4. 把ResultSet转为 Student , List集合。
  5. 关闭资源
  6. sql语句和业务逻辑代码混在一起

8 MyBatis框架

什么 mybatis: 是一个持久层框架, 原名是ibatis, 2013改名为 MyBatis. MyBatis可以操作数据库,对数据执行增删改查。 看做是高级的jdbc。 解决jdbc的缺点。

mybatis能做什么?

1) 注册驱动 。

2) 创建jdbc中使用的Connection, Statement,ResultSet

3)   执行sql语句, 得到ResultSet
4)   处理ResultSet, 把记录集中的数据转为java对象,  同时还能把java对象放入到List集合。

5)关闭资源

6)实现sql语句和java代码的解耦合。

mybatis的文档: https://mybatis.org/mybatis-3/zh/index.html

第二章 MyBatis入门

2.1 第一个例子

实现步骤:

0.创建student表(id,name,email,age)


1.新建maven项目


2.修改pom.xml


1)加入依赖 mybatis依赖, mysql驱动, junit


2)在加入资源插件


3.创建实体类Student。定义属性, 属性名和列名保持一致


4.创建Dao接口, 定义操作数据库的方法。


5.创建xml文件(mapper文件), 写sql语句。


mybatis框架推荐是把sql语句和java代码分开


mapper文件:定义和dao接口在同一目录, 一个表一个mapper文件。


6.创建mybatis的主配置文件(xml文件):有一个, 放在resources目录下


1)定义创建连接实例的数据源(DataSource)对象

2)   指定其他mapper文件的位置

7.创建测试的内容。

使用main方法,测试mybatis访问数据库

也可以使用junit 访问数据库

2.2 概念

1.自动提交:当你的 sql语句执行完毕后, 提交事务。 数据库更新操作之间保存到数据

2.手动(手工)提交事务:在你需要提交事务的位置, 执行方法,提交事务或者回顾事务。

2.3 MyBatis的一些重要对象

1) Resources : mybatis框架中的对象, 一个作用读取 主配置信息。


InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");


2)SqlSessionFactoryBuilder:负责创建SqlSessionFactory对象


SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);


3)SqlSessionFactory: 重要对象


SqlSessionFactory是重量级对象:创建此对象需要使用更多的资源和时间。 在项目中有一个就可以了。


SqlSessionFactory接口:作用是SqlSession的工厂, 就是创建SqlSession对象。


DefaultSqlSessionFactory实现类


public class DefaultSqlSessionFactory implements SqlSessionFactory { }


SqlSessionFactory接口中的方法


openSession(): 获取一个默认的SqlSession对象, 默认是需要手工提交事务的。


openSession(boolean): boolean参数表示是否自动提交事务。


true: 创建一个自动提交事务的SqlSession


false: 等同于没有参数的openSession


SqlSession对象

SqlSession对象是通过SqlSessionFactory获取的。 SqlSession本身是接口


DefaultSqlSession: 实现类


public class DefaultSqlSession implements SqlSession { }


SqlSession作用是提供了大量的执行sql语句的方法:



设置标签

selectOne:执行sql语句,最多得到一行记录,多余1行是错误。
selectList:执行sql语句,返回多行数据
selectMap:执行sql语句的,得到一个Map结果
insert:执行insert语句
update:执行update语句
delete:执行delete语句
commit:提交事务
rollback:回顾事务


注意SqlSession对象不是线程安全的, 使用的步骤:


①:在方法的内部,执行sql语句之前,先获取SqlSession对象


②:调用SqlSession的方法,执行sql语句


③:关闭SqlSession对象,执行SqlSession.close()

2.4 使用工具类和模版

1)创建模版,mapper文件模版和mybatis主配置文件模版

创建模版的步骤:

image.png

创建模版文件:

image.png

创建文件选择使用的模版:

image.png

第三章 MyBatis的Dao代理

3.1 dao代理

3.1.1 mybatis提供代理:

mybatis创建Dao接口的实现类对象, 完成对sql语句的执行。 mybatis创建一个对象代替你的 dao实现类功能。

3.1.2 使用mybatis代理要求

1)mapper文件中的namespace 一定dao接口的全限定名称

2)mapper文件中 标签的id是dao接口方法名称


相关文章
|
SQL Java 数据库连接
MyBatis大全
MyBatis大全
48 0
|
3月前
|
算法 Java 数据库连接
MyBatis-Plus详解(2)
MyBatis-Plus详解(2)
25 0
|
3月前
|
SQL Java 数据库连接
Mybatis(四)
Mybatis(四)
34 0
|
5月前
|
Java 数据库连接 数据库
mybatis的@MappedTypes
mybatis的@MappedTypes
88 1
|
SQL 安全 Java
Mybatis
参数传递 单个普通参数:Mybatis可以直接使用这个值,取值#{ },不会对它进行处理 多个参数:任意多个参数,都会被Mybatis封装成一个Map传入,map的key时param1,param2,或者0.1.2.......,就是参数的值
48 1
|
SQL Java 数据库连接
|
XML Java 数据库连接
MyBatis-Plus使用
MyBatis-Plus使用
|
SQL Java 关系型数据库
Mybatis详解(2)
你好看官,里面请!今天笔者讲的是 Mybatis详解(2)。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
203 1
|
SQL 存储 算法
MyBatis-Plus详解
MyBatis-Plus详解
176 0
|
SQL XML 存储