Mybatis笔记

 

数据库mybatis和hibernate

hibernate

是一个标准的ORM框架,即对象关系映射,入门门槛较高,无需写sql语句,依赖语句自定生成sql语句;

由于是对sql语句进行优化,修改比较困难;

应用场景:

  适用于需求变化不多的中小型项目,比如后台管理系统、erp、orm、oa...

 

mybatis

专注于slq本身,需要程序员自己编写sql语句;

由于是自己编写,sql修改、优化比较方便;

是一个不完全的ORM框架,虽然是程序员自己写sql语句,但也可以实现映射:输入映射、输出映射等

应用场景:

  适用于需求变化较多的项目,比如互联网项目...

 

总结:企业进行技术选型,应以低成本、高回报作为原则。

 


 Mybatis框架执行过程

步骤1、

配置mybatis的全局配置文件:SqlMapConfig.xml,配置了数据源、事务等mybatis运行环境;

配置mybatis的映射文件(sql语句):mapper.xml、mapper.xml、mapper.xml...

步骤2、

通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂:SqlSessionFactory,(注意)其在实际使用时按单例方式

步骤3、

通过SqlSessionFactory创建SqlSession:SqlSession是一个面向用户接口(提供操作数据库方法,发出增删改查),(注意)实现对象是线程不安全的,建议SqlSession应用场合在方法体内

步骤4、

调用SqlSession内部的方法,通过Executor执行器去操作数据库,如果需要提交事务,需要执行sqlSession的commit()方法;

直接与mysql数据库交接的部分)使用mapper statement(底层封装对象),对操作数据库存储封装,包括sql语句,输入参数、输出结果类型

步骤5、

释放资源,关闭sqlSession

输入:

输入参数类型:Java简单类型、hashmap、pojo自定义

输出:

输出结果类型:Java简单类型、hashmap、pojo自定义

 

Mybatis项目结构

-mybatis_project

   -src

    -cn.itcast.mybatis.first

    -cn.itcast.mybatis.jdbc

  -config

    -log4j.properties

    -SqlMapConfig.xml

  -JRE System Library

  -Referenced Libraries

  -lib

    -jar包...

 

 


Mybatis开发dao的两种方法(掌握)

原始dao方法

①需要程序员编写dao接口实现类

②需要在dao实现类中注入一个SqlSessionFactory工厂

mapper代理开发方法

只需要程序员编写mapper接口,也就是dao接口

程序员在编写mapper.xml映射文件的和mapper.java需要遵循一个开发规范:

①mapper.xml中的namespace就是mapper.java的类全路径

②mapper.xml中statement的id和mapper.java中方法一致

③mapper.xml中statement的parameterType指定输入参数的类型和mapper.java中方法参数类型一致

④mapper.xml中statement的resultType指定输出接口的类型和mapper.java中方法返回值类型一致

 

输入映射(掌握)

parameterType:指定输入参数类型,可以为简单类型、pojo、hashmap...

对于综合查询,建议parameterType使用包装的pojo,有利于系统的扩展

输出映射(掌握)

resultType:查询到的列名和resultType指定的pojo的属性名一致,才能映射成功;假如不一致,通过resultMap设置列名和属性名之间的对应关系(映射关系)可以完成映射

resultMap:可以通过resultMap完成一些高级映射

 


动态sql(掌握)

if判断(掌握)

where

foreach

sql片段(掌握)

 


高级(结果集)映射(了解)

1、将关联查询的列映射到一个pojo属性中,实现一对一查询

2、将关联查询的列映射到一个List<pojo>中,实现一对多查询

3、实现多对多查询

4、Mybatis延迟加载

 


Mybatis查询缓存

1、一级缓存

2、二级缓存(了解mybatis二级缓存使用场景)

 

 


 

Mybatis逆向工程 

 

 

 

 

 

 

 

 

posted @ 2018-07-08 16:41  hoanfir  阅读(152)  评论(0编辑  收藏  举报