MyBatis—框架概述
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis—框架概述相关的知识,希望对你有一定的参考价值。
三层架构
MVC:
web开发中,使用mvc架构模式
m: 数据,v: 视图,c: 控制器
m数据:来自数据库mysql来自文件, 来自网络 v视图:现在使用jsp, html, CSS,
js。 显示请求的处理结果, 把m中数据显示出来 c控制器:接收请求,调用service对象,
显示请求的处理结果。当前使用servlet作为控制器mvc作用:
1)实现解耦合
2)让mvc各负其职
3)使的系统扩展更好。更容易维护
作用:
- 界面层(视图层) :接收用户的请求,调用service, 显示请求的处理结果的。包含了jsp, html, servlet等对
象。对应的包controller - 业务逻辑层:处理业务逻辑,使用算法处理数据的。把数据返回给界面层。 对应的是service包, 和包中的很多
的XXXService类。例如: StudentService ,OrderService, ShopService - 持久层(数据库访问层) :访问数据库,或者读取文件,访问网络。获取数据。对应的包是dao。 da0包中很多
的StudentDao, OrderDao, ShopDao等等
框架解决的问题
框架解决的最重要的一个问题是技术整合,在
J2EE
的 框架中,有着各种各样的技术,不同的应用,系统使用不同的技术解决问题。需要从J2EE
中选择不同的技术,而技术自身的复杂性,有导致更大的风险。企业在开发软件项目时,主要目的是解决业务问题
即要求企业负责技术本身,又要求解 决业务问题。这是大多数企业不能完成的。框架把相关的技术融合在一起,企业开发可以集中在业务领域方面
另一个方面可以提供开发的效率
JDBC操作数据库
public void findStudent() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//注册 mysql 驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据的基本信息 url ,username,password
String url = "jdbc:mysql://localhost:3306/springdb";
String username = "root";
String password = "123456";
//创建连接对象
conn = DriverManager.getConnection(url, username, password);
//保存查询结果
List<Student> stuList = new ArrayList<>();
//创建 Statement, 用来执行 sql 语句
stmt = conn.createStatement();
//执行查询,创建记录集,
rs = stmt.executeQuery("select * from student");
while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setAge(rs.getInt("age"));
//从数据库取出数据转为 Student 对象,封装到 List 集合
stuList.add(stu);
}} catch (Exception e) {
e.printStackTrace();
} finally {
try {
//关闭资源
if (rs != null) ;
{
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
JDBC的缺点
- 代码比较多,开发效率低
- 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
- 对 ResultSet 查询的结果,需要自己封装为 List
- 重复的代码比较多些
- 业务代码和数据库的操作混在一起
MyBatis 框架
MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software
foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。
iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。 iBATIS
提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAOs)
MyBatis 解决的主要问题
减轻使用 JDBC 的复杂性,不用编写重复的创建 Connetion , Statement ; 不用编写关闭资源代码。
直接使用 java 对象,表示结果数据。让开发者专注 SQL 的处理。 其他分心的工作由 MyBatis 代劳。
MyBatis 可以完成:
- 注册数据库的驱动,例如
Class.forName(“com.mysql.jdbc.Driver”))
- 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
- 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
List<Student> list = new ArrayLsit<>();
ResultSet rs = state.executeQuery(“select * from student”);
while(rs.next){
Student student = new Student();
student.setName(rs.getString(“name”));
student.setAge(rs.getInt(“age”));
list.add(student);
}
- 关闭资源
ResultSet.close() , Statement.close() , Conenection.close()
以上是关于MyBatis—框架概述的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取