Mybatis入门(一)

xiaoxiao2021-02-28  112

学习Mybatis的过程(一)

什么是Mybatis原生jdbc开发的总结Mybatis框架的流程图Mybatis的学习思路

1.什么是Mybatis

Mybatis是一个持久层的框架,开源的的,是Apache下的一个顶级项目,现在这个项目托管到github里面了。点击传送门查看这个开源项目。

Mybatis让程序员把主要的精力放在sql上,自己编写sql,根据需要去灵活的编写。

官网的解释:

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2.原生jdbc开发的总结

先看一段代码:

Class Test{ 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", "mysql"); //定义sql语句 ?表示占位符 String sql = "select * from 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(); } } } }

单独使用jdbc开发存在的问题:主要是 数据库连接和硬编码的问题

1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。 设想:使用数据库连接池管理数据库连接。

2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。 设想:将sql语句及占位符号和参数全部配置在xml中。

4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。 设想:将查询的结果集,自动映射成java对象。

3.Mybatis框架的流程图

image

1.SqlMapConfig.xml

是mybatis的全局配置文件,名称不固定的。 配置数据源等,配置映射文件(配置sql语句)

2.SqlSessionFactory

会话工厂,根据配置文件来创建工厂,创建SqlSession

3.SqlSession

会话,只一个接口,面向用户(程序员),操作数据库

4.Excutor

执行器,是一个接口(基本执行器,缓存执行器),作用是SqlSession内部通过执行器操作数据库。

5.mapped statemnt

底层封装对象,作用对数据库存储封装,包括sql语句,输入参数,输出结果类型

6.输入参数类型

java简单类型,pojo自定义,hashmap

7.输出结果类型

java简单类型,pojo自定义,hashmap

4.Mybatis的学习重点

Mybatis开发Dao的两种方法

原始的dao开发(程序需要编写dao接口和dao的实现类) (掌握)

Mybatis的mapper接口(相当于dao接口)代理的开发(掌握)

Mybatis的SqlMapConfig.xml配置(全局的配置文件)

Mybatis的核心

Mybatis的输入映射(掌握)

Mybatis的输出映射(掌握)

Mybatis的动态sql(掌握)

高级映射

高级缓存

spring和mybatis整合

逆向工程

转载请注明原文地址: https://www.6miu.com/read-55149.html

最新回复(0)