mybatis

mybatis

总的来说,mybatis是一个持久层框架, 作用是跟数据库交互完成增删改查。
如果以前学过Hibernate,其实它跟hibernate很相似,作用和类型都是一样的,只是实现的方法有所不同。

这是mybatis的工作流程图
mybatis_第1张图片

1. mybatis配置
mybatis有一个全局配置文件,叫SqlMapConfig.xml,它配置了mybatis的运行环境等信息。
mapper.xml文件是sql的映射文件,文件中配置操作数据库的sql语句。此文件需要在全局配置文件中进行加载。
内容大概是这样的:
全局配置文件
https://github.com/coolcoolercool/mybatis0523/blob/master/src/SqlMapConfig.xml
sql映射文件
https://github.com/coolcoolercool/mybatis0523/blob/master/src/User.xml

2.通过mybatis环境等配置信息构建SqlSessionFactory,也就是会话工厂

3.由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

4.mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5.Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6.Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7.Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

下面对流程中重要部分的框进行描述:
输入映射:
输入映射(就是映射文件中可以传入哪些参数类型)
(1)基本类型:比如Integer,Double等等,不过这里String也可以作为输入映射。
(2)pojo类型:pojo就是java bean有一些属性,还有get set方法。类似于hibernate中domain文件。
(3)Vo类型:view object表现层对象,主要用于在高级查询中从页面接收传过来的各种参数。
(4)Map类型:键值对

输出映射
.输出映射(返回的结果集可以有哪些类型)
(1)基本类型:如上
(2)pojo类型:如上
(3)List类型:这个是比输入映射多出来一个类型,但是list中的元素还是这些类型,只不过可以一次性输出多个映射输出。
(3)Map类型:如上

配置文件
mapper.xml中存储的主要是配置的sql语句
类似于这样

namespace="test">
    <select id="findUserById" parameterType="java.lang.Integer" resultType="jk.pojo.User">
        select * from user where id=#{id}
    select>

id:sql语句唯一标识
parameterType:指定传入参数类型
resultType:返回结果集类型
中间部分就是可供选择的sql语句

全局配置文件SqlMapConfig
比如在下面的配置中就将mapper.xml文件进行加载。

<mappers>
<mapper resource="User.xml"/>
    <package name="jk.mapper"/>
mappers>

这是本人学习的一个mybatis的工程连接
https://github.com/coolcoolercool/mybatis0523

最后对比一下mybatis和hibernate的差异:
hibernate:它是一个标准的orm框架,比较重量级。
优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期.
缺点:sql语句无法优化
应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目,
总的来说,在用于量不大,并发量小的时候使用.
mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单
优点:sql语句可以优化, 执行效率高,速度快
缺点:编码量较大,会拖慢开发周期
应用场景: 互联网项目,比如电商,P2p等
总的来说是用户量较大,并发高的项目.

最后新手上路,多多指教。

你可能感兴趣的:(mybatis,java,mybatis)