• Mybatis学习(叁)


    一、resultMap[结果映射  关系映射]

    作用:当查询的数据与数据库中的数据不一致(表中字段和实体的属性不一样),通过resultMap进行一次映射。

    可以使用简单的做法:(取别名)

    二、多表查询

    在实际中,数据不仅仅来源与一张表(多表查询)

    通过Mybatis开发DAO的步骤:

     

    1、建表

     

    2、实体

     

    3、类型别名

     

    4DAO接口

     

    5mapper文件实现DAO

     

    6mapper文件注册

     

    7、测试(Service)

     

     

    1Mybatis进行多表操作时需要解决的问题

     

    1、实体需要处理:实体与实体之间并不是孤立存在 ,存在关系从属有has a

     

    2Mybatis做多表查询表的处理

    3mapper文件处理

    a、一对一关系(Person----Passport)

    建表

    实体

    类型别名

    DAO的接口

    mapper文件实现DAO

    注意:

    1、在查询时,通常需要给字段取别名,防止查询是多表中出现相同的字段

    2、实体之间如果需要建立双向关系,在两个实体中都需要添加关系属性

    mapper文件注册

    测试

    b、一对多关系

    建表

    实体

    mapper文件

    c、多对多关系

    建表

    实体:

    mapper文件

    三、动态sql(Dynamic SQL)

    作用:简化开发

    1sql片段:把重复使用的sql片段提取出来,方便使用

     

    2where标签

    第二种处理:

    3set标签:

    第二种处理:

    4jdbcType:当插入数据或者修改数据时,添加或者修改的值就为null

    <update  id="">

       update t_person set name=#{pname,jdbcType=VARCHAR} where id=#{pid}

    </update>

    常用的jdbcTypeTINYINT  DOUBLE  TIMESTAMP

    5${value}  动态sql拼接

    四、Mybatis的缓存(cache)

     

    问题:多次相同的查询操作,频繁的操作操作数据,频繁使用网络I/O和磁盘I/O,大大降   低软件效率。

     

    缓存:缓冲存储,属于内存的一块区域。把第一次查询的结果保存在缓存,以后相同的查询   操作,可以避免与数据库的交互

     

    缓存可能存在的风险:

     

    脏读:数据库的数据和查询的结果(从缓存中)不一样,Mybatis规避,只要事务提交,Mybatis就会清空缓存

     

    使用缓存:

     

    1、在mybatis-conf.xml中配置,让缓存生效

     

    <settings>

     

    <setting name="cacheEnabled" value="true"/>

     

    </settings>

     

    2、在需要使用缓存查询的mapper文件中加上<cache></cache>

     

    3、缓存在SQLSession关闭后生效

     

    4、对实体进行序列化

     

    注意:

     

    查询完毕,关闭SQLSession,让缓存生效

     

    DML操作完毕,SQLSession提交,清空缓存,避免脏读

  • 相关阅读:
    SQL如何获取上一条..下一条..首尾记录
    PHP判断浏览器类型的代码
    html命名规范
    使用JavaScript JS 获取label for 标签的值和for值
    PNG透明兼容IE6的几种方法
    冉茂锋同学去上课了
    十一戒,自勉
    语录
    CreateThread最后还是调用的ntdll.dll里面的ZwCreateThread
    InitializeObjectAttributes
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/5976982.html
Copyright © 2020-2023  润新知