Mybatis框架一文详解

Mybatis框架

  • Mybatis框架
    • 1:三层框架
      • 三层对应的包:
      • 三层中类的交互:
      • 三层对应的处理框架:
    • 2:框架
      • 框架介绍:
      • 模板:
      • 框架的特点:
    • 3:使用JDBC的缺陷
    • 4:myBatis框架
      • 1:sql Mapper:sql映射
      • 2:myBatis提供了那些功能?
      • 3:总结
    • 5:myBatis使用步骤:
      • 实现步骤:
      • 接口创建步骤:
      • sql映射文件解释:
      • myBatis主配置文件解释:
      • myBatis读取数据步骤案例:
    • 6:主要类的介绍:
      • 1:Resources:
      • 2:sqlSessionFactoryBuilder:
      • 3:sqlSessionFactory:
      • 4:sqlSession:
    • 7:myBatis工具类(简化代码)
    • 8:动态代理及传入参数
      • 1:动态代理介绍:
      • 2:使用动态代理方式的要求:
      • 3:传入参数:
    • 9:#和$的区别
      • #:占位符
      • **$** :字符串替换
    • 10:myBatis的输出结果
      • 1:resultType结果类型
      • 2:定义自定义类型的别名
      • 3:resultMap:结果映射
      • 4:like模糊查询
    • 11:动态Sql
      • 介绍:
      • 1:if是判断条件的
      • 2:where
      • 3:foreach
      • 4:sql代码片段
    • 12:数据库的属性配置文件
    • 13:扩展:PageHelper

Mybatis框架

1:三层框架

**界面层:**和用户打交道的,接收用户的请求参数,显示处理结果的。(jsp html servlet)

**业务逻辑层:**接收了界面层传递的数据,计算逻辑,调用数据库,获取数据。

**数据访问层:**就是访问数据库,执行对数据的查询,修改,删除等等。

三层对应的包:

界面层:controller包(servlet类)

业务逻辑层:service包(XXXservice类)

数据库访问层:dao包(XXXDao类)

三层中类的交互:

用户使用界面层–>业务逻辑层—>数据库访问层—>数据库(mysql)

三层对应的处理框架:

界面层(servlet类)—>springMVC(框架)

业务逻辑层(service类)—>spring(框架)

数据库访问层(dao类)—>myBatis(框架)

2:框架

框架介绍:

是一个舞台,模板。

框架是一个软件,半成品的软件,定义好了一些基础功能,需要加入你的功能就是完整的。基础功能是可以重复使用的,可升级的。

模板:

1:规定好了一些条款,内容。

2:加入自己的东西。

框架是一个模板

1:框架中定义好了一些功能,这些功能是可用的。

2:可以加入项目中自己的功能,这些功能可以利用框架中写好的功能。

框架的特点:

1:框架一般不是全能的,不能做所有的事情。

2:框架是针对某一个领域有效,特长在某一个方面,比如myBatis做数据库操作,但是它不能做其他的。

3:框架是一个软件。

3:使用JDBC的缺陷

1:代码比较多,开发效率低

2:需要关注Connection,Statement,ResultSet对象的创建和销毁

3:对ResultSet查询的结果,需要自己封装List集合。

4:重复的代码比较多。

5:业务代码和数据库操作混合在一起。

4:myBatis框架

一个框架,早期叫做ibatis,代码在gitHup

myBatis是 MyBatis SQL Mapper Framework for Java(sql映射框架)

1:sql Mapper:sql映射

可以把数据库表中的一行数据,映射为一个java对象。

一行数据可以看做是一个java对象,操作这个对象,就相当于操作表中的数据。

Data Access Object (DAOs)

数据访问,对数据库进行增删改查。

2:myBatis提供了那些功能?

1:提供了创建Connection,Statement,ResultSet的能力,不用开发人员创建这些对象了。

2:提供了执行sql语句的能力,不用你执行sql语句。

3:提供了循环sql,把sql的结果转换为java对象,List集合的能力。

4:提供了关闭资源的能力,不用你关闭Connection,Statement,ResultSet。

开发人员做的是:提供sql语句。

最后是:开发人员提供sql语句—>myBatis处理sql—>开发人员得到List集合或java对象(表中的数据)。

3:总结

myBatis是一个sql映射框架,提供操作数据库的能力,增强的JDBC。

使用myBatis让开发人员集中精神写sql就可以了,不必关心Connection,Statement,ResultSet的创建和销毁以及sql语句的执行。

5:myBatis使用步骤:

下载地址:https://github.com/mybatis/mybatis-3/releases

实现步骤:

1:新建student表。

2:加入maven的myBatis坐标,mysql驱动的坐标。

3:创建实体类,Student–保存表中的一行数据的。

4:创建持久层的dao接口,定义操作数据库的方法。

5:创建一个myBatis使用的配置文件,叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。
这个文件是xml文件。
1:在接口所在的目录中。
2:文件的名称,和接口保持一致。

6:创建myBatis的主配置文件:
一个项目就一个主配置文件。
主配置文件提供了数据库的连接信息和SQL映射文件的位置信息。

7:创建使用myBatis类:
通过myBatis访问数据库。

接口创建步骤:

/**
 * 接口:操作student表
 */
	public interface StudentDao {
   		//查询student表的所有数据
  		List<Student> stuSelect();

  		//插入数据方法
  		//参数:student,表示要插入到数据库的数据
  		//返回值:int,表示执行insert操作后,影响数据库的行数
  		int insertStudent(Student student);
	}

sql映射文件解释:



<mapper namespace="com.sss.dao.StudentDao">

    
    <select id="stuSelect" resultType="com.sss.entity.Student">
        select id,name,email,age from student order by id
    select>

    
    <insert id="insertStudent">
        insert into student values(#{id},#{name},#{email},#{age})
    insert>

mapper>