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对象并返回。

  1. 分析原生态jdbc程序中存在的问题
    1. 原生态Jdbc程序代码
      
      public static void main(String[] args) {
      
      Connection connection = null;
      
      PreparedStatement preparedStatement = null;
      
      ResultSet resultSet = null;
      
      
      try {
      
      //1、加载数据库驱动
      
      Class.forName("com.mysql.jdbc.Driver");
      
      //2、通过驱动管理类获取数据库链接
      
      connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
      
      //3、定义sql语句 ?表示占位符
      
      String sql = "select * from user where username = ?";
      
      //4、获取预处理statement
      
      preparedStatement = connection.prepareStatement(sql);
      
      //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
      
      preparedStatement.setString(1, "王五");
      
      //6、向数据库发出sql执行查询,查询出结果集
      
      resultSet =  preparedStatement.executeQuery();
      
      //7、遍历查询结果集
      
      while(resultSet.next()){
      
      System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
      
      }
      
      } catch (Exception e) {
      
      e.printStackTrace();
      
      }finally{
      
      //8、释放资源
      
      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. Jdbc问题总结
  2. 数据库连接频繁开启和关闭,会严重影响数据库的性能。
  3. 代码中存在硬编码,分别是数据库部分的硬编码和SQL执行部分的硬编码。
发布了303 篇原创文章 · 获赞 179 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_27248989/article/details/104076963
今日推荐