• Mybatis的使用(4)


    1:解决实体类成员变量和数据库表中字段名称不一致的问题:

    方法1:在写sql语句时,给表中的列名起别名,名字和实体类名称一样

    方法2:使用resultMap来解决:

    例如:实体类中成员变量为id,name,数据库表中的列名叫bookid,bookname,两者不一致则使用resultmap:

    List getall();

        





     

    表的关联关系:一对多,多对一,一对一,多对多等关联关系

    数据库中有两张表,分别为student和teacher

     

     

     

     

    一对多关系:(一个老师对应多个学生)

    Teacher getById(Integer id);

        



















    Teacher byId = teacherMapper.getById(1);
    System.out.println(byId);

    多对一关系:

    Student getbyid(Integer id);























    Student byId = studentMapper.getbyid(1);
    System.out.println(byId);

     

    一对一与上两个类似

    多对多关系需要有个第三张表来表示两表之间的关系。

    总之无论是什么关联关系,如果某方持有另一方的集合,则使用标签完成映射,如果某方持有另一方的对象,则使用标签完成映射。

     

    2:事务:多个操作同时完成,或同时失败称为事务处理

    四个特性:原子性,一致性,隔离性,持久性

     

    在mybatis中设置事务:

    :程序员自己控制处理的提交和回滚

    可以设置为自动提交:

    sqlsession=factory.openSession():默认是手动提交,设置为false也是手动提交

    sqlsession=factory.openSession(true):自动提交,不必再写sqlsession.commit().

     

     

    3:缓存:mybatis框架提供两级缓存,一级缓存和二级缓存,默认开启一级缓存

    缓存的目的就是为了提高查询效率

    流程:先到缓存里查,查不到的就去数据库查,查完放缓存里,下次在查询的时候直接从缓存里取,不在访问数据库。如果数据库发生commit操作,则清空缓存

    一级缓存使用的是sqlsession的作用域,同一个sqlsession共享一级缓存的数据

    二级缓存使用的是mapper的作用域,不同的sqlsession只要访问的是同一个mapper.xml文件,则共享二级缓存作用域

    二级缓存步骤:

    3.1在核心配置文件中加入

    3.2.在mapper.xml中开启二级缓存

    3.3实体类必须实现java.io.serializable,保证实体可序列化

  • 相关阅读:
    【高等数学】【7】二重积分
    【算法-数组3】螺旋数组(一入循环深似海啊!)
    基于JAVA汽车销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    非常规的DeepFaceLab(DeepFake)小花招和注意事项
    最大流=最小割 简单证明
    EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
    @HttpMessageConverter注解的基本介绍
    Streamline PDF Signing with Signature
    Java并发-操作系统,进程,线程,并行并发?
    【SNP 喜讯】贝里精英集团SAP S/4 HANA PCE系统成功上线
  • 原文地址:https://www.cnblogs.com/zhangtaibing/p/16542213.html