zoukankan      html  css  js  c++  java
  • Mybatis

    一。

    1. mybatis是一个持久层框架, 作用是跟数据库交互完成增删改查

    2.原生Dao实现(需要接口和实现类)

    4.动态代理方式(只需要接口)

    mapper接口代理实现编写规则:

          1) 映射文件中namespace要等于接口的全路径名称

          2) 映射文件中sql语句id要等于接口的方法名称

          3) 映射文件中传入参数类型要等于接口方法的传入参数类型

          4) 映射文件中返回结果集类型要等于接口方法的返回值类型

    5. #{}占位符:占位

          如果传入的是基本类型,那么#{}中的变量名称可以随意写

          如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性...

    6.  ${}拼接符:字符串原样拼接

          如果传入的是基本类型,那么${}中的变量名必须是value

    如果传入的参数是pojo类型,那么${}中的变量名称必须是pojo中的属性.属性.属性...

          注意:使用拼接符有可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格

    7. 映射文件:

          1)传入参数类型通过parameterType属性指定

          2)返回结果集类型通过resultType属性指定

    8. hibernate和mybatis区别:

          hibernate:它是一个标准的orm框架,比较重量级,学习成本高.

               优点:高度封装,使用起来不用写sql,开发的时候,会减低开发周期.

               缺点:sql语句无法优化

               应用场景:oa(办公自动化系统), erp(企业的流程系统)等,还有一些政府项目,

                     总的来说,在用于量不大,并发量小的时候使用.

          mybatis:它不是一个orm框架, 它是对jdbc的轻量级封装, 学习成本低,比较简单

               优点:学习成本低, sql语句可以优化, 执行效率高,速度快

               缺点:编码量较大,会拖慢开发周期

               应用场景: 互联网项目,比如电商,P2p等

                    总的来说是用户量较大,并发高的项目.

    二。

    1. 输入映射(就是映射文件中可以传入哪些参数类型)

          1)基本类型

          2)pojo类型

          3)Vo类型

    2. 输出映射(返回的结果集可以有哪些类型)

          1)基本类型

          2)pojo类型

          3)List类型

    3. 动态sql:动态的拼接sql语句,因为sql中where条件有可能多也有可能少

          1)where:可以自动添加where关键字,还可以去掉第一个条件的and关键字

          2)if:判断传入的参数是否为空

          3)foreach:循环遍历传入的集合参数

    4)sql:封装查询条件,以达到重用的目的

    Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的,如下:

     将where条件抽取出来:

     

    使用include引用:

    注意:如果引用其它mapper.xml的sql片段,则在引用时需要加上namespace,如下:

    <include refid="namespace.sql片段”/>

    4. 对单个对象的映射关系:

    关联查询:

    1)    自动关联(偷懒的办法):可以自定义一个大而全的pojo类,然后自动映射其实是根据数据库总的字段名称和pojo中的属性名称对应.(新建一个对象类,使这个类继承关联查询的一个对象,将另个对象的属性赋值到这个类里面。)

    Mapper.xml文件

    Pojo对象文件

    2)    手动关联: 需要指定数据库中表的字段名称和java的pojo类中的属性名称的对应关系.使用association标签。

    Mapping.xml文件

    Pojo对象:

    5. 对集合对象的映射关系

          只能使用手动映射:指定表中字段名称和pojo中属性名称的对应关系

               使用collection标签

    6. spring和mybatis整合

          整合后会话工厂都归spring管理

          1)原生Dao实现:

               需要在spring配置文件中指定dao实现类

               dao实现类需要继承SqlSessionDaoSupport超类

               在dao实现类中不要手动关闭会话,不要自己提交事务.

          2)Mapper接口代理实现:

               在spring配置文件中可以使用包扫描的方式,一次性的将所有mapper加载

    7. 逆向工程:自动生成Pojo类,还可以自动生成Mapper接口和映射文件

          注意:生成的方式是追加而不是覆盖,所以不可以重复生成,重复生成的文件有问题.

               如果想重复生成将原来生成的文件删除

  • 相关阅读:
    大道至简——一个例子讲清楚观察者模式
    博客园界面代码风格自定义设置
    前端资源网址大集合
    如何检测浏览器是否安装了Adblock,uBlock Origin,Adguard,uBlock等广告屏蔽插件
    WebUploader 上传插件结合bootstrap的模态框使用时选择上传文件按钮无效问题的解决方法
    js中+号的另外一种用法
    C++ 最简单的日志类
    树莓派入门(3)—— 基本配置
    树莓派入门(2)——安装系统
    树莓派入门(1)——准备工作
  • 原文地址:https://www.cnblogs.com/txf0324/p/11169896.html
Copyright © 2011-2022 走看看