欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis小结

程序员文章站 2022-08-21 15:34:27
Mybatis Mybatis的介绍 1. Mybatis是持久层层框架,是半ORM(对象关系映射)框架. 2. 使用Mybatis有两类配置文件 核心配置文件: mybatis Config.xml 映射配置文件: 与接口相对应的xml文件 3. 核心的API: SqlSessionFactory ......

mybatis

mybatis的介绍

1. mybatis是持久层层框架,是半orm(对象关系映射)框架.
2. 使用mybatis有两类配置文件
    * 核心配置文件: mybatis-config.xml
    * 映射配置文件: 与接口相对应的xml文件
3. 核心的api:
    * sqlsessionfactorybuilder : 构建者模式
    * sqlsessionfactory : 工厂模式
    * sqlsession
4. 执行的流程
    1. 读取配置文件
    2. 使用sqlsessionfactorybuilder的builder方法获取sqlsessionfactory
    3. 使用sqlsessionfactory的opensession方法获取sqlsession
    4. 使用sqlsession的getmapper方法获取接口的代理对象
    5. 测试方法即可
5. 了解mybatis底层使用的知识点:
    * 反射
    * 构建者模式,工厂模式,代理模式
    * xml配置文件的相关操作
    

mybatis的基本开发

1. 规范:
    * xml配置文件中的namespace与接口的全限定类名相同.
    * 动态标签的id与接口的方法名一致
    * xml的配置文件和接口的包名与接口名一致
2. sql语句的写法:
    * $ : 字符串拼接符,简单数据类型使用${value},复杂类型就是${属性}
    * # : 占位符
3. 插入的主键返回:
    <selectkey keyproperty="" keycolumn="" resulttype="" order="after">
        select last_insert_id()
    </selectkey>
4. 动态sql:
    1. <sql id=""></sql>  : sql片段
    2. <if test=""> : if判断
    3. <where> : 添加条件,自动添加 where 1 = 1并且去掉拼接条件后的第一个and
    4. <foreach collection="" open="" close="" item="" separator=""> : 遍历集合
5. sql的输入输入参数的传递:
    * 输入参数: parametertype
    * 输出参数: resulttype, resulemap
6. 核心配置文件:
    * <properties> : 加载外部properties资源文件
    * <typealises> : 起别名
    * <mappers> : 加载映射的xml配置文件
    * <enviroments> : 配置数据库的连接信息
        1. 事务 : jdbc事务
        2. 连接池 : 
            * pooled : 连接池
            * unpooled : 每次创建新的
            * jndi
        3. mybatis默认是不自动提交的,可以在opensession中传入true开启自动提交
7. 关联查询(一对多,多对多)
    * 使用resultmap来进行相关的查询:
        1. <association javatype=""> : 单个pojo
        2. <collection oftype=""> : 集合
8. 延迟加载(需要在核心配置文件中开启延迟加载的开关)
9. mybatis的缓存:
    * 一级缓存: sqlsession
    * 二级缓存: sqlsessionfactory(需要开启二级缓存的开关)
10. 注解开发:
    * @insert
    * @select
    * @update
    * @delete
    * @results
    * @result
    * @resultmap
    * @one
    * @money
    * @cachenamespace