截取自:http://www.cnblogs.com/selene/p/4604605.html
以下是原生jdbc连接数据库代码:
public class JdbcTest { public static void main(String[] args) { // 数据库连接 Connection connection = null; // 预编译的Statement,使用预编译的Statement提高数据库性能 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 t_user where username = ?"; // 获取预处理statement preparedStatement = 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) { // TODO Auto-generated catch block e.printStackTrace(); } } if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
上面代码的问题总结:
1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
解决方案:使用数据库连接池管理数据库连接。
2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。
解决方案:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
解决方案:将sql语句及占位符号和参数全部配置在xml中。
4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。
解决方案:将查询的结果集,自动映射成java对象。
MyBatis是什么?
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
架构图如下
mybatis配置
SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
相关推荐
在IT行业中,MyBatis是一个广泛...通过对这些知识点的理解和掌握,开发者能够更好地利用MyBatis进行数据库操作,提高代码的可读性和维护性。对于那些想要深入理解MyBatis源码的开发者,这个系列可能会提供宝贵的见解。
总之,Spring、MyBatis和MySQL的整合是Java开发中的常见实践,通过这种方式,我们可以利用Spring的强大管理能力,MyBatis的灵活SQL操作,以及MySQL的稳定数据库支持,构建出高效且易于维护的应用程序。通过学习和...
我们可以从以下几个关键点来深入理解 MyBatis: 1. **SqlSession**: 这是 MyBatis 的核心接口,提供了执行 SQL 语句、提交和回滚事务等方法。源码中可以查看到它的实现类 DefaultSqlSession,了解其工作原理。 2. ...
MyBatis通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录,从而降低了数据访问的复杂度。 **Spring与MyBatis的整合** Spring和MyBatis的...
Mybatis是一个流行的Java持久层框架,它简化了JDBC编程的复杂性,通过使用XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。接下来将详细...
Mybatis则是一个轻量级的持久层框架,它解决了JDBC的繁琐代码问题,提供了更方便的SQL映射和对象关系映射。Mybatis允许开发者直接编写SQL,提高了查询效率和灵活性,同时通过XML或注解方式配置和映射原生信息,将...
MyBatis允许开发者编写自定义的SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中...
在MyBatis 3.5.2中,我们可以深入探讨以下几个关键知识点: 1. **SqlSessionFactoryBuilder**:它是创建SqlSessionFactory的工具类,通过读取配置文件或XML配置流来构建SqlSessionFactory。 2. **...
MyBatis 可以使你更好的控制 SQL 执行,同时提供了一个简单的 XML 或注解配置来映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 本入门基础案例 "mybatis...
MyBatis通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。 在实际项目中,Spring与MyBatis的整合主要体现在以下几个方面: 1. **Spring管理MyBatis的...
首先,MyBatis是一个半自动化的ORM框架,它内部封装了JDBC操作,开发者只需关注SQL语句本身,MyBatis通过xml文件或注解来配置和映射原生信息,支持将POJO映射成数据库中的记录。MyBatis的编写原生态SQL特性赋予了...
MyBatis通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3. **Spring与MyBatis整合**:整合Spring和MyBatis主要涉及以下几个步骤: ...
MyBatis 的核心概念包括以下几个方面: 1. **配置文件**:MyBatis 的配置文件定义了数据源、事务管理器以及映射文件的位置。在`mybatis-3.0.6-SNAPSHOT`中,你可能找到一个名为`mybatis-config.xml`的配置文件,这...
5. **兼容性**:考虑到不同的数据库可能有不同的分页语法,MyBatis和Spring提供了抽象层,使得开发者可以编写数据库无关的代码。 6. **性能优化**:在SQL Server中,使用`ROW_NUMBER()`配合`OVER()`函数进行分页...
在Java Web开发中,Spring、Mybatis和Druid是三个非常重要的组件,它们共同构建了高效、稳定的数据库访问层。Spring作为一个强大的框架,提供了一种模块化和面向切面编程的解决方案;Mybatis则是一个轻量级的持久层...
MyBatis是一个轻量级的持久层框架,它简化了SQL操作,通过XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis提供了与Spring的无缝集成,...
SpringMVC是Spring框架的一部分,专门用于处理Web应用的请求-响应模型,而Mybatis则是一个轻量级的持久层框架,它允许开发者通过简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects)...
Mybatis是一个轻量级的持久层框架,它简化了SQL操作,通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects, 普通的Java对象)映射成数据库中的记录。Mybatis消除了几乎所有的JDBC...
通过对原生JDBC的改进,解决了许多常见问题,如数据库连接管理、SQL语句硬编码等问题。此外,MyBatis还提供了高级功能,如动态SQL、延迟加载等,使得开发者能够更加灵活地处理复杂的业务逻辑。通过学习和掌握MyBatis...