Mybitis框架2016年1月3日

MyBatis框架简介
  1.什么是MyBatis(iBatis-->MyBatis)
    MyBatis是对JDBC技术封装,简化数据库操作代码.
  2.MyBatis体系结构(看图tts,不过没讲,有点深奥;看mybatis.png图)
    MyBatis封装了一下功能:
  --a.封装了建立连接,设置参数执行SQL,释放连接过程
  (提供连接参数,SQL,SQL参数值)
  --b.封装了查询结果映射成实体对象过程
  (实体类属性名与数据表字段名保持一致)

    //部份代码
    Emp emp = new Emp();
    emp.setName(rs.getString("name"));
    ...............
    findById-->Emp-->sqlSession.selectOne()
    findAll-->List<Emp>-->sqlSession.selectList()

  --c.封装了SQL语句中参数设置过程
  (提供SQL时,参数想给SQL映射,利用#{属性名}替代?)
  Ref: #{}这里只是占位符的作用,注意和${}的区别.

 insert into Emp values (#{属性名},?,?,?,?)
    pst = conn.prepareStatement(sql);
    pst.setString(1,"tom");
    pst.setString(2,20);
    ......

  ***开发者使用需要做以下工作***:
  --搭建MyBatis框架环境
  --根据表写实体类(名称一致,少一些麻烦?)
  --根据操作写SQL(使用#{属性}替代?)
  --利用SqlSession调用操作(提供SQL参数)

  3.MyBatis配置文件
    a) SqlMapConfig.xml(主配置文件[1个])
       定义连接参数,框架参数,加载SQL文件
    b) sqlMap.xml文件(定义SQL语句的XML文件[可以多个])
    c) 实体类.java
  4.框架API简介
    a) SqlSessionFactoryBuilder:该对象负责根据MyBatis配置文件SqlMapConfig.xml构建SqlSessionFactory实例
    b) SqlSessionFactory:核心.创建SqlSession对象实例
    c) SqlSession:包含了所有执行SQL操作的方法(如下),用于执行已映射的SQL语句
    sqlSession.selectOne();
    sqlSession.selecList("findAll")
    sqlSession.insert()
    sqlSession.update()
    sqlSession.delete()

二.MyBatis基本应用
    返回Map查询

 <select parameterType="int" resultType="map" id="findNameById">
    SELECT cost_id,name FROM cost WHERE cost_id=#{id}
 </select>

    ------------------------------TestCase部分代码--------------------

Map<String, Object> map = sqlSession.selectOne("findSomeById", 1);

    1)Mapper映射器:开发者创建绑定映射语句的接口,映射器接口的实例可以从SqlSession中获得
       Mapper接口中的方法名要和SqlMap.xml中的SQL的id保持一致
    2)在SqlMap.xml定义<select>操作时,如果查询结果字段名和Java POJO属性不一致时
       要使用<resultMap>元素指定映射关系[解决了表中字段和实体类中属性不同名的问题]

 <select id="findAll" resultMap="deptMap">
      SELECT deptno,name,loc FROM dept
 </select>

 <resultMap id="deptMap" type="org.tarena.entity.Dept">
     <result property="no" column="DEPTNO">
     <result property="name" column="DNAME">
     <result property="loc" column="LOC">
 </resultMap>


你可能感兴趣的:(框架,mybitis)