Mybatis【java三大框架】

  1. 三大框架和三层架构

ssm: SpringMVC  Spring Framework  Mybatis

三层架构:

       表示层:   与客户端实现交互。    SpringMVC

       业务逻辑层: 处理表示层业务关系。 Spring Framework

       数据持久层: 与数据库进行交互。  Mybatis

  1. 什么是框架

将繁琐的,重复性工作封装起来,使开发者能够将更多精力放在业务分析和理解上的这套程序。

框架的优点:

  1. 简化开发,提升开发效率。
  2. 屏蔽细节,安全性高
  1. Mybatis框架
    1. 传统jdbc的问题
  1. 连接四个参数有硬编码问题。(配置文件)
  2. sql的定制不够灵活  (配置文件)
  3. 频繁打开和关闭连接,耗时。(连接池)
    1. 什么是mybatis

mybatis最早是apache下的项目,ibatis;

被移植到google code上,正式更名为mybatis。

github:开源管理平台

官网:http://www.mybatis.org/mybatis-3/

                     mybatis是一个持久层框架,支持定制化sql,存储过程和高级映射。

                     mybatis通过xml或者注解实现定制。

                     mybatis是一个orm框架。

orm:对象关系映射(java对象和关系型数据库表记录之间的映射问题)

 

关注点:

  sql  /  输入参数  / 输出结果

    1.  下载

https://github.com/mybatis/mybatis-3/releases

  1. 入门案例
  1. 创建java项目,导入jar(mybatis核心jar,数据库驱动包)
  1. 增删改查
  2. mapper代理实现dao开发
  1. mapper接口+mapper配置文件
  1. mapper接口和mapper映射文件必须同包同名
  2. mapper映射的namespace和接口全限定名称保持一致
  3. mapper标签的id值和接口的方法名称一致
  4. 标签的输入参数和接口方法的输入参数类型一致
  5. 标签的结果类型和接口方法的返回值类型一致
  1. 注解实现

  1. 高级映射

resultType:

       结果集字段名称和属性名一致则映射成功;

       结果集字段和属性名部分一致则部分映射成功;

   结果集字段和属性名都不一致不会创建对象。

一对多

<!-- type:对象类型  orm -->

    <resultMap type="dept" id="deptMap">

       <!--  主键字段映射  -->

       <id column="deptno" property="deptno"/>

       <!-- 非主键字段映射  -->

       <result column="dname" property="dname"/>

       <result column="loc" property="loc"/>

       <!-- 封装结果到集合    property:属性    javaType:每个对象类型 -->

       <collection property="emps" ofType="emp" column="deptno">

           <id column="empno" property="empno"/>

           <result column="ename" property="ename"/>

           <result column="job" property="job"/>

           <result column="hiredate" property="hiredate"/>

           <result column="mgr" property="mgr"/>

           <result column="sal" property="sal"/>

           <result column="comm" property="comm"/>

           <result column="deptno" property="deptno"/>

       </collection>

    </resultMap>

一对一

<resultMap type="emp" id="empMap">

       <id column="empno" property="empno"/>

       <result column="ename" property="ename"/>

       <result column="job" property="job"/>

       <result column="hiredate" property="hiredate"/>

       <result column="mgr" property="mgr"/>

       <result column="sal" property="sal"/>

       <result column="comm" property="comm"/>

       <result column="deptno" property="deptno"/>

       <!-- 封装结果到对象中 -->

       <association property="dept" column="deptno" javaType="dept">

           <id column="deptno" property="deptno"/>

           <result column="dname" property="dname"/>

           <result column="loc" property="loc"/>

       </association>

    </resultMap>

    <select id="findEmpAndDept" resultMap="empMap">

      select * from emp left join dept on emp.deptno = dept.deptno

    </select>

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_42676052/article/details/82561081