当前位置: 代码迷 >> 综合 >> MyBatis框架以及源码分析
  详细解决方案

MyBatis框架以及源码分析

热度:11   发布时间:2024-02-08 04:31:51.0

一.什么是MyBatis框架

mybatis是一个优秀的基于Java的持久层框架,它内部封装了Java传统的JDBC,提供了很多方便高效的封装类以及接口API,使得开发者不必过度关注JDBC开发的复杂过程,而只需要关注要实现功能的sql语句。它通过简单的XML文件或注解来实现框架的配置和使用。同时,它使用ORM [1] 的思想实现了对结果集的封装。

[1] ORM( Object Relation Mapping): 对象关系映射,简单的说就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。

 

二.原始JDBC代码分析

1.JDBC数据库查询代码编写

publicstaticvoidmain(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try{//加载数据库驱动Class.forName("com.mysql.jdbc.Driver");//通过驱动管理类获取数据库链接connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "root");//定义sql语句?表示占位符String sql = "select *from user where username =?";//获取预处理statementpreparedStatement = connection.prepareStatement(sql);//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值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 {//释放资源if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (preparedStatement != null) {try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {// TODOAuto-generated catch blocke.printStackTrace();}}}
}

2.JDBC的弊端

(1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
(2)Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要频繁修改java源代码。
(3)开发过程复杂繁琐,sql语句与java代码混杂在一起,开发者无法专心于sql语句功能的实现

 

三.MyBatis框架开发

 

  相关解决方案