mybatis入门(一)——初试mybatis

来源:互联网 发布:js toobject方法 编辑:程序博客网 时间:2024/06/05 06:26

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编程的方式,敬请关注!

原创粉丝点击