mybatis介绍:
1. mybatis是一个持久层框架,是apache下的顶级项目;
2. 不完全的ORM框架。需要程序员自己去填写,但是也有输入和输出映射
3. 适用需求变化较多的项目,比如互联网项目
mybatis框架图:
1.mybatis的核心是sqlMapConfig.xml,可以利用它配置映射文件,以及一些属性,和别名。关于它的详细介绍,参见:sqlMapConfig.xml详解
2.sqlsessionFactory主要的作用:读取mybatis的核心配置文件,打开sqlsession
3.sqlsession主要通过读取mapper文件,操作数据库,selectone或selectlist,或者找到mapper类,通过mapper类操作数据。具体两种方式可参见:mybatis入门(三)——Mapper代理开发替代传统DAO层开发
4.executor是sqlsession的内容的执行器,用于操作数据库。
5.mapped statement主要是mapper.xml的中的对于sql语句的封装,包括输入和输出参数。
总而言之,mybatis的这种框架目的是为了更方便的获取输入的参数,得到输出的参数。
mybatis基础:
原生的jdbc方式:
package cn.itcast.mybatis.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 原始的jdbc方式
* @author cyl
*
*/
public class JdbcTest {
public static void main(String[] args) {
//1.数据库连接
Connection connection=null;
//2.预编译语句prepareStatement
PreparedStatement preparedStatement=null;
//3.结果集
ResultSet resultSet=null;
try {
//加载数据库的驱动
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root","1");
//定义sql语句
String sqlString="select * from user where username = ?";
preparedStatement=connection.prepareStatement(sqlString);
//设置,参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数从序号2开始
preparedStatement.setString(1, "陈小明");
//向数据库发出sql语句查询,查询出结果集
resultSet=preparedStatement.executeQuery();
//遍历结果集:
while (resultSet.next()) {
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源:
//1.释放结果集
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
//2.释放prepareStatement
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
//2.关闭连接
if(connection!=null){
try {
connection.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
}
原生的JDBC代码回存在什么问题?
数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。
将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
- 向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
- 从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。
Mybatis优点:
- 支持sql,存储过程以及高级映射;
- 避免几乎所有的原生JDBC的代码;
- 避免手动设置参数以及获取结果集;
- 支持输入和输出映射
结语 |
感谢浏览,下面将介绍使用mybatis编程的方式,敬请关注!