初入MyBatis,简介

一.MyBatic的作用

O:Object  ,Java POJO 简单普通的java对象,由有一些private的参数作为对象的属性,然后针对每一个参数定义get和set方法      

public class Category {
    private int id;
    private int catNum;
    private String catName;
    private String catStatus;

    public int getId() {
        return id;
    }


    public void setId(int id) {
        this.id = id;
    }

    public int getCatNum() {
        return catNum;
    }

    public void setCatNum(int catNum) {
        this.catNum = catNum;
    }

    public String getCatname() {
        return catName;
    }

    public void setCatname(String catname) {
        this.catName = catname;
    }

    public String getCatStatus() {
        return catStatus;
    }

    public void setCatStatus(String catStatus) {
        this.catStatus = catStatus;
    }
}

     Java POJO与Java Bean比较:       

      1.POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。

      2.POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。

      3.Javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。

R:Relationship,在关系数据库中,一条数据由多个列组成

抛出问题:关系数据库中,无法直接存储一个完整的POJO,造成O/R不匹配的问题,此时需要将POJO中的属性映射到关系数据库中

解决方案: 

    MyBatis的持久化解决方案是将用户从原始的JDBC访问中解放出来,用户只需要定义需要操作的SQL语句,无须关注底层的JDBC操作,就可以以面向对象的方式来进行持久化层操作.底层数据库                               连接的获取,数据访问的实现,事务控制等都无须用户关心,从而将应用层从底层的JDBC/JTA API抽取出来.通过配置文件管理JDBC连接,让MyBatis解决持久化的实现.

MyBatic优点

  MyBatis是对JDBC的封装

    1. 优化获取和释放

  一般在访问数据库时都是通过数据库连接池来操作数据库,数据库连接池有好几种,比如C3P0、DBCP,也可能采用容器本身的JNDI数据库连接池。可以通过DataSource进行隔离解耦,统一从DataSource里面获取数据库连接,DataSource具体由DBCP实现还是由容器的JNDI实现都可以,所以将DataSource的具体实现通过让用户配置来应对变化。

    2.SQL统一管理,对数据库进行存取操作

    使用JDBC对数据库进行操作时,SQL查询语句分布在各个Java类中,这样可读性差,不利于维护,当修改Java类中的SQL语句时要重新进行编译。Mybatis可以把SQL语句放在配置文件中统一进行管理,以后修改配置文件,也不需要重新就行编译部署。

    3.生成动态SQL语句

    在查询中可能需要根据一些属性进行组合查询,比如我们进行商品查询,我们可以根据商品名称进行查询,也可以根据发货地进行查询,或者两者组合查询。如果使用JDBC进行查询,这样就需要写多条SQL语句。

    4.能够对结果集进行映射

    在使用JDBC进行查询时,返回一个结果集ResultSet,我们要从结果集中取出结果封装为需要的类型在Mybatis中可以设置将结果直接映射为需要的类型,比如:JavaBean对象、一个Map、一个List等等。

  

相关推荐