Mybatis(个人笔记)

本文记录了在IntelliJ IDEA中使用Mybatis进行开发的一些关键步骤和理解,包括配置XML映射文件、动态SQL、参数映射以及事务管理等方面的内容,旨在帮助读者深入理解Mybatis的工作原理和实践应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


mapper映射包含两部分:
1.执行sql语句
2.封装结果的实体类类型
然后把这两个信息组合起来,以map存储
    key是namespace+id
    value是mapper对象(包含String的sql、entity)


代理对象的生成:
    类加载器:它使用和被代理对象相同的类加载器
    代理对象实现的接口和被代理对象一样
    如何代理:他就是增强的方法,我们要提供,这里是一个InvocationHandler的接口
我们需要写一个该接口的实现类,在实现类中调用selectList方法

Mapper映射配置中sql语句的书写是无关大小写的

Mybatis动态sql查询

mybatis操作
    1-1
    1-n
    m-n:多对多查询时,不同表中相同的字段名需要起别名,否则封装时会出问题
JNDI:
    java naming and directory interface是SUN公司推出的一套规范,属于javaEE技术
    是模仿windows系统的注册表,功能:在服务器中注册数据源

查询的时机:
    延时加载
        在真正使用数据时才发起查询 ,也叫按需加载、懒加载
    立即加载
        管用不用,马上发起查询
    其实加载机制是根据关系来查询的,有四种关系:
        一对一,多对一:通常立即加载
        一对多,多对多:通常延迟加载
Mybatis的缓存
    为什么使用缓存
        减少与数据库之间的交互次数,提高执行效率
    什么样的数据需要使用缓存
        适用于缓存:经常查询且不经常修改
        数据的正确与否对最终结果影响不大的

    一级缓存:
        存储于SqlSession对象的缓存,将查询到的数据存到sqlSession中的
        一块区域,这个区域的结构是Map,当sqlSession消失时一级缓存就会消失
        SqlSession除了关闭之外可以清空缓存之外,还可以通过一个方法clearCache
    一级缓存何时触发:
        一级缓存是sqlSession范围的缓存,当调用sqlSession的添加,修改,删除,commit(),close()等方法
        时,就会清除一级缓存

    二级缓存:
        存储于SqlSessionFactory对象中的缓存,是由一个SqlSessionFactory创建的SqlSession对象共享其缓存
    二级缓存的使用(实体类要实现序列化接口):
        第一步:让mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)
        第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)
        第三步:让当前的操作支持二级缓存(在select标签中配置)

        结果:根据id查询的同一个的对象是false,是因为二级缓存中存的是数据,只是做了重新赋值而已

在Mybatis中针对CRUD的注解一共有四个:
    @Select @Update @Insert @Delete
    在使用注解开发时不能存在xml映射文件
    结果集映射使用@Results和@Result组合,关联查询使用@One或者@Many,fetchType是加载类型的设置
    结果集有id属性,示范@ResultMap(value = "accountMap")

    解决查询结果的封装问题,问题来源:实体类属性名和数据库字段名不同

    @CacheNamespace(blocking = true)用来开启二级缓存

    关联:
    @Result(property = "accounts",column = "id",many =
    @Many(select = "com.kali.dao.IAccountDao.findByUid",
    fetchType = FetchType.LAZY))

    #和$的区别,#的数据会自动添加"",$取的数据不加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值