Mybatis解决了JDBC编程哪些问题

一:Mybatis简介

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

(1)Mybatis通过xml映射文件或注解的方式将要执行的各种statement(内含sql语句)配置起来;

(2)通过java对象(输入)和statement中的sql进行映射生成最终执行的sql语句;

(3)最后由mybatis框架执行sql并将结果映射成java对象(输出)并返回。

其中的java对象一般是每个数据库表对应的pojo类,当然输入(sql参数)一般为pojo类或其中的属性,输出(sql结果)可以为pojo类、其中属性或list。

二、Mybatis解决了jdbc编程的哪些问题

1、     数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。

2、     Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

3、     向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。

解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。

4、     对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。

解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

三、原始Dao开发和Mapper动态代理的方法

1、原始Dao开发:

(1)映射文件:sql语句;sql语句的输入参数类型;sql语句的输出类型。

(2)dao接口:定义有哪些数据操作方法的方法名,输入参数类型,返回(输出)类型,这和映射文件中的sql是对应的。

(3)dao接口的实现类:用注入的工厂创建会话,用会话的增删改查方法实现dao接口中定义的方法。

注:这里说向statement中传递参数,我们在映射文件中写的是SQL,但是我们操作的对象是statement,可以理解为在java中我们用statement把sql包了起来,在java中操作statement间接操作sql。

2、Mapper动态代理方式:

(1)Mapper映射文件:Mapper.xml,和dao的映射文件相同。

(2)Mapper接口:Mapper.java,也和dao的接口文件相同。

区别:不用写接口的实现类,不过在用实现类的时候,比上面dao用的时候多两步步,(1)建立会话(2)获取mapper接口的代理对象,然后就可以调用代理对象的方法了(等同于调用dao接口实现类里的方法)。

Mapper接口开发需要遵循以下规范:

(1)Mapper.xml文件中的namespace与mapper接口的类路径相同。(namespace+id才能定位到我们要操作的statement)

(2)Mapper接口方法名和Mapper.xml中定义的每个statement的id相同

(3)Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同

(4)Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

时间: 2024-10-27 20:02:12

Mybatis解决了JDBC编程哪些问题的相关文章

用JDBC编程的运行时错误及其解决大全

用JDBC编程的运行时错误及其解决 用JDBC编程的运行时错误及其解决 源代码: 1.java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 1.1 错误信息: 1.2 错误描述 1.3 错误解决方法 2.用户 'sa' 登录失败 2.1 错误信息: 2.2 错误描述 2.3 错误解决方法 3.Invalid parameter binding(s) 3.1 错误信息: 3.2 错误描述 3.3

用JDBC编程的执行时错误及其解决大全

用JDBC编程的执行时错误及其解决 用JDBC编程的执行时错误及其解决 源码: 1.java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 1.1 错误信息: 1.2 错误描写叙述 1.3 错误解决方法 2.用户 'sa' 登录失败 2.1 错误信息: 2.2 错误描写叙述 2.3 错误解决方法 3.Invalid parameter binding(s) 3.1 错误信息: 3.2 错误描写叙

用JDBC编程的运行时错误及其解决大全--转载http://www.th7.cn/Program/java/201409/274583.shtml

用JDBC编程的运行时错误及其解决 用 JDBC 编程的运行时错误及其解决 源代码: 1 . java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 1.1  错误信息: 1.2  错误描述 1.3  错误解决方法 2 .用户  'sa'  登录失败 2.1  错误信息: 2.2  错误描述 2.3  错误解决方法 3 . Invalid parameter binding(s) 3.1  错误

02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis

我们先用jdbc去编写一个例子: 第一步:建表 1 /* 2 SQLyog v10.2 3 MySQL - 5.1.72-community : Database - mybatis 4 ********************************************************************* 5 */ 6 7 8 /*!40101 SET NAMES utf8 */; 9 10 /*!40101 SET SQL_MODE=''*/; 11 12 /*!40014

JDBC编程的方式

JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatement) 6. 通过statement执行sql并获取结果 7. 对sql执行结果进行解析处理 8. 释放资源(resultSet.preparedstatement.connection) 可以看出所有的

1Mybatis入门--1.1单独使用jdbc编程问题总结

1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = Dri

JavaWeb-17 (JDBC编程进阶2)

JavaWeb-17 JDBC编程进阶2 一.自定义框架 习惯:搞工具类尽量写多些注释 开始制定框架 项目架构: c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</pro

第十三章.MySQL数据库与JDBC编程(下)

JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: public static synchronized Connection getConnection(String url, String user, String  pass) throws SQLException:该方法获得url对应数据库的连接 Connection:代表数据库连接对象,每个Conn

JDBC编程步奏、问题总结(一)

jdbc编程步骤: 1. 加载数据库驱动 2. 创建并获取数据库链接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatement) 6. 通过statement执行sql并获取结果 7. 对sql执行结果进行解析处理 8. 释放资源(resultSet.preparedstatement.connection) jdbc问题总结如下: 1. 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可