• mybatis


    mybatis ORM框架
    和hibernate相比
    1.hibernate功能完善 , mybatis稍欠缺,例如在缓存方面
    2.hibernate hql方言的支持,可以在任意数据库上生成对应的sql语句,移植性更强
    mybatis因为是编写sql语句,所以移植性较差
    3.hibernate全自动化面向对象的编程,mybatis半自动化,面向sql编程
    4.mybatis开发效率较高

    在mybatis中 ${}和#{}的区别在于,$用来直接拼接内容,而#号会使用预编译的方式
    更加安全,防止sql的注入

    在mapper.xml文件中编写sql语句,同时让mapper的namespace映射接口的路径
    1.DAO层接口中定义方法,但是不写具体注解来实现
    2.定义Maaper文件,文件中的语句的数量对应着接口的方法的个数,并且语句的id和
    方法名相同
    3.Mapper文件的namespace指向接口的路径
    4.在核心配置中注册Mapper文件路径就可以
    5.使用的时候还是getMapper(接口.class) 还是使用接口,符合开发的思想

    mybatis调用时传递多个参数怎么办?
    dao层的方法带有参数在语句标签中可以不用指定parameterType
    1.可以直接使用下标访问或者#{arg0} #{param1}
    arg开头从第0个元素访问,param从第一个开始
    2.Map方式 在sql语句的#{map的key}来得到mapper的值

    解决属性和表字段不同名的办法有
    1.查询的时候使用as给别名
    2.使用ResultMap来解决,通过配置result property=属性名 column=列名来让查询
    的结果列和java对象的属性映射调用set方法来注入值

    resultMap还能解决对象关系映射的问题
    多对一:在多的一端放1的一端的对象
    一对多:在1的一端放多的一端的集合

    mybatis的缓存策略
    1.一级缓存是sqlSession级的缓存,指在session未关闭之前查询相同的对象会命中缓冲
    2.二级缓存是Mapper级别的缓存,指同一个sqlSessionFactory中多个sqlSession访问
    同一个对象时,如果在mapper文件中添加了<cache/> 就会默认打开这个mapper的二级缓存
    所有一级缓存的数据都会存一份到二级缓存,所以如果一级缓存没有命中会去二级缓存
    中寻找(要等sqlSession关闭时才会把一级缓存中的数据存入到二级缓存中)

    动态sql语句
    创建

  • 相关阅读:
    装饰者模式(包装模式)
    内网穿透
    SpringMVC框架工作流程图及工作原理
    Java 使用 Socket 判断某服务能否连通
    最简单的一个socket客户端,保持连接服务端
    java读取txt文件
    SQL汇总
    最简单的一个socket服务端
    初级软件工程师怎么走向BATJ?——献给迷茫中的测试人
    软件测试工程师——100问面试题,你敢来接招吗?
  • 原文地址:https://www.cnblogs.com/beiluoL/p/10668540.html
Copyright © 2020-2023  润新知