Mybatis小白入门案例详解

正文

一,MyBatis的执行流程

  1. mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的 
    信息。
  2. mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,即会话工厂。
  3. 通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。
  4. SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
  5. Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。

二,MyBatis经典入门案例(原始DAO实现用户表的增删改查)

1,环境准备

  • Jdk环境:jdk1.8.0_20
  • 使用工具环境:STS
  • 数据库环境:MySQL 5.1
  • Mybatis:3.4.6

 

项目目录如下: 

 

下面一一讲解这些文件。

2,全局配置文件:SqlMapConfig.xml

主要是2个标签:

  • environments-用于获取连接池连接,将来与spring整合时,这个就不要啦,由spring来配置数据库连接。

  • mappers-用于引用映射文件。

3,创建主体类:User.class

4,创建映射文件:User.xml

映射文件就是框架的核心啦,下面这个文件就配置了java对象与数据库表之间的映射。

我们看到,其中4个标签:select,insert ,delete ,update 分别对应着“查,增,删,改”操作。每个标签中还有一些属性,下面来解释下:

  • id:给标签体内的sql操作起个名字,方便调用。
  • parameterType:传入参数的类型。传入java类型,转化为sql类型,添加到sql语句上。
  • resultType:返回结果类型。sql结果集转化为java类型并返回。

5,创建dao接口和实现类

6,编写测试类

至此,一个完整的Mybatis入门案例已经初步完成。测试代码写死了,不推荐,建议用下面方案。

回过头来看DAO的实现类,原始dao开发存在一些问题:

  • 存在一定量的模板代码。比如:通过SqlSessionFactory创建SqlSession;调用SqlSession的方法操作数据库;关闭Sqlsession。
  • 存在一些硬编码。调用SqlSession的方法操作数据库时,需要指定statement的id,这里存在了硬编码。

三,Mapper代理开发模式

Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可,而不同再写dao实现类啦。Mybatis会自动的为mapper接口生成动态代理实现类。不过要实现mapper代理的开发方式,需要遵循一些开发规范。

  1. mapper接口的全限定名要和mapper映射文件的namespace的值相同。
  2. mapper接口的方法名称要和mapper映射文件中的statement的id相同。
  3. mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
  4. mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致。

上面4句话的意思是:接口的包名,类名,参数,返回值分别对应着映射文件的namespace,id,parameterType,resultType。

下面来改造上面的例子。

1,环境准备,同上。 
2,全局配置文件,同上。记得引用新的映射文件。 
3,创建主题类,同上。 
4,创建映射文件:UserMapper.xml。文件名一般加上“Mapper”。

下面这个文件跟原始dao编程只有一点不同,就是namespace值。

5,创建Mapper接口,这里就没有实现类啦。

注意,函数一定要注意4点规范。

6,编写测试类

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值