Mabatis 框架

Ⅰ.关于Mabatis

  • 对数据库中的数据进行访问的框架

  • 数据库执行过程:

    连接数据库-->准备好SQL-->发送SQL语句-->执行语句-->获取结果-->关闭

1.Mabatis工程创建

  • 创建流程了解即可
1.创建maven项目
  • 可以更方便的管理依赖项(下载依赖项和关联依赖项)

  • 添加依赖

    框架 作用 依赖项
    mabatis 对数据库的数据进行访问的框架 mybatis
    mabatis-spring Mybatis整合Spring mabatis-spring
    spring 创建和管理对象 spring-context
    jdbc 创建和管理数据库编程 spring-jdbc
    mysql connector MySQL连接的依赖项 mysql-connector-java
    DBCP 数据库连接池的依赖项 commons-dbcp2
    junit 测试 junit-jupiter-api
2.配置Mabatis
  1. datasource.properties

    • 连接数据库的参数

      • url
      • driver
      • username
      • password
    • 使用mybatis时,配置SQL的XML文件的位置
      • classpath:mapper/AdminMapper.xml
  2. 配置类SpringConfig类

    1. @PropertySource(classpath:datasource.properties)

      • @PropertySource是Spring框架的注解,用于读取properties类型的配置文件,读取到的值将存入到Spring容器的Environment对象中
      • @Value注解是将Environment中对应的对象读出来
    2. 配制出一个数据源:Datasource

      1. 使框架连接数据库;

      2. 使用(DBCP2)的BasicDatasource(可换其它的source)设置datasource的值;

      3. 返回datasource的值会保存在Spring容器中,供随时调用;

    3. SqlSessionFactoryBean

      1. mabatis框架正常运行的前提:获取文件位置和数据源
      2. mabatis的强制要求配置
        1. datasource(是哪一个)
        2. MapperLocations(在哪儿)
    4. 配置MapperScan

      • 指定接口所在的根包
      • MapperScan("cn.tedu.mybatis.mapper")
      • 用于Mybatis处理数据的接口被Mybatis识别
  3. 创建数据库表字段对应的类例如:Admin

    1. implements Serializable序列化接口
    2. 私有属性private
    3. getter and setter
    4. equals() and hashcode()
    5. toString()
3.实现功能
  1. 写Mapper接口里边的抽象方法:(方法不允许重载)

    1. 定义抽象方法
  2. 返回值类型

    1. 增删改:返回int
    2. 查询:返回对应的结果只类型
    3. 参数:
    4. 参数超过一个需要添加@Param注解
    5. 参数太多,需要进行封装例如:Admin
  3. xml文件配置sql

    1. namespace接口:必须实现
    2. SQL语句
      1. 根据查询类型选取相应的节点
      2. id的值就是抽象方法的名称
      3. 获取自动编号的值:useGeneratedKeys="true" keyProperty="id"
  4. 建议:

    1. 不建议加分号

    2. 设计大于需求

  5. 查询

    1. 查询所使用的必须是select节点
    2. select节点必须配置resultType或resultMap中的一个
    3. resultType与resultMap
      1. resultType

        • 的值就是抽象方法的返回值类型的全限定名
      2. resultMap
        • 节点的作用:指导mybatis将查询到的结果集封装到对象中
        • id:自定义名称
        • type:封装查询结果的类型的全限定名
    4. -查询某1条记录
      1. 通过测试可以发现:当存在匹配的数据时,将可以查询到数据,当不存在匹配的数据时,将返回null

Ⅱ.动态sql

1.<foreach>节点:重要
  • 其它节点

    • //

Ⅲ.关联查询

1.RBAC
  • Role Based Access Control(基于角色的访问控制)

    • 经典的用户权限管理的设计思路

      • 用户、角色、权限将分配到各种角色上,
      • 用户可以关联某种角色,
      • 进而实现用户与权限相关
        • unsigned--无符号位(无负数)
        • comment(备注,注释)
2.<sql>节点封装(xml)
  1. 由于不建议使用星号表示字段列表,而关联查询时,由于涉及多张表,则字段列表可能较长,可以使用<sql>节点封装字段列表,并在编写SQL语句时,使用<include>节点进行引用

  2. 使用封装了查询的字段列表,与resultMap的相性更好,所以,在开发实践中,通常结合一起使用

  3. resultMap节点
    • resultMap节点的作用:指导mybatis将查询到的结果集封装到对象中

      • resultMap节点的id属性:自定义名称
      • resultMap节点的type属性:封装查询结果的类型的全限定名
      • 主键应该使用id节点进行配置,非主键、非集合的使用result节点进行配置

    1.result子节点

    • 主键应该使用id节点进行配置,非主键、非集合的使用result节点进行配置
    • column=结果集中的列名,property=属性名
    • 在关联查询中,即便结果集中的列名与类的属性名完全相同,也必须配置

    2.collection子节点

    • collection子节点:用于配置1对多关系的数据部分,通常在类中是List类型的属性
    • collection子节点的ofType:List集合中的元素的类型
  4. id节点作为主键具有唯一性

Ⅳ.小结

1.了解Spring框架的MYbatis工程
2.了解整合了Spring框架的Mybatis工程的配置
3.掌握声明抽象方法的原则
  • 返回值类型:

    • 增删改 返回int
    • 查询
      • 统计 int
      • 单条结果 返回可装下的数据类型
      • 多条结果
        • List
        • /String...
        • /String[]
  • 方法名称

    • 自定义,不重载
  • 参数列表

    • 根据需要执行的sql语句来设计

    • 当需要进行插入数据时,必须将参数进行封装

      • 建议配置获取自动ID:(设计大于需求)

        useGeneratedKeys="true" keyProperty="id"
    • 其它类型的操作

      • 参数较多,可以封装
      • 1个参数直接声明
      • 如果超过一个数量不多可以,在每个参数之前添加@Param注解
4.配置sql语句
  • 了解注解配置sql语句

    • @Insert/@Select...
  • 掌握xml配置sql语句

    • xml配置sql语句的优点

      • 更加直观,方便阅读
      • 易于长篇sql语句;
      • 利于分工合作
      • 易于更多复杂sql语句的实现(动态sql/关联查询...)
    1. XML文件需要顶部的特殊声明==

      • 网上下载/复制粘贴
    2. *根节点是<mapper>,且必须配置namespace--取值为对应的Java接口的全限定名
    3. 根据执行的sql语句来选择不同的//...节点,都必须配置id属性==>取值为对应的抽象方法的名称
    4. 插入数据时,当需要获取自动生成的主键值时,需要在节点上配置useGeneratedKeyskeyProperty属性
    5. <select>节点上,必须配置resultMap或者resultType属性中的一个
  • 掌握使用<sql>封装sql语句片段

    • 使用<include>进行引用,实现sql语句的复用
  • 掌握<resultMap>的配置方式

    • *主键列与属性的映射必须使用子节点配置

      • mabatis在处理id时,它会认为值必须是唯一的,

        如果连续读到了两条一样的数据,它会跳过第2条记录,

        它会认为它和第一条是一样的,它就不管了

    • 在一对多,多对多的查询中,集合类型的属性的映射必须使用<collection>子节点进行配置

    • 其他列与属性的映射使用<result> 子节点配置

    • 在单表的查询中,列与属性名一样,可以不必显示的配置

    • 在关联查询中,即使列与属性名一样,也必须显示的配置出来

  • 理解<resultType><resultMap>的使用原则

    • 尽可能的全部使用resultMap
    • 如果查询结果是单一的某一个数据类型(例如基本数据类型或字符串或某个时间等),则使用resultType
  • 掌握动态sql中的<foreach>的使用

  • 大概了解动态sql中的其他标签

4-6 Mabatis 框架的更多相关文章

  1. 在spring+springMvc+mabatis框架下集成swagger

    我是在ssm框架下集成swagger的,具体的ssm搭建可以看这篇博文: Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构 本项目的GitHu ...

  2. Mybatis学习笔记(九) —— Mybatis逆向工程

    一.什么是Mybatis逆向工程? 简单的解释就是通过数据库中的单表,自动生成java代码. 我们平时在使用Mabatis框架进行Web应用开发的过程中,需要根据数据库表编写对应的Pojo类和Mapp ...

  3. Mybatis初步认识

    分三层 第一章 1.三层架构 界面层:和用户打交道,接收用户的请求参数明显是处理结果的(jsp,html,servlet) 业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问 ...

  4. SSM框架总结(1)

    ----------------------20170106-------------------------------------- 1.mabatis.genertor中自动生成文件,需要在ge ...

  5. spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架

    前言: 本项目基于maven构建,使用mybatis-spring-boot作为spring-boot项目的持久层框架 spring-boot中使用mybatis持久层框架与原spring项目使用方式 ...

  6. 在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记

    第一章:Maven概述 (1)Maven是一个项目构建工具,由apache提供,用Java开发的 (2)构建工具:Ant(蚂蚁),Maven(专家) (3)构建工具作用:帮助程序员进行项目的创建,目录 ...

  7. SSM框架搭建详细解析

    总结了一下搭建SSM框架流程,在以后用到的时候方便回头使用. 使用工具:MyEclipse 2015:Tomcat 8版本:jdk1.8版本. 首先: 1:创建一个WebProject项目,jdk1. ...

  8. shiro框架整合ssm框架

    下面我通过一个web的maven项目来讲解如何将shiro整合ssm框架,具体结构如下图 一.引入依赖的jar包 <?xml version="1.0" encoding=& ...

  9. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

随机推荐

  1. StringBoot整合ELK实现日志收集和搜索自动补全功能(详细图文教程)

    @ 目录 StringBoot整合ELK实现日志收集和搜索自动补全功能(详细图文教程) 一.下载ELK的安装包上传并解压 1.Elasticsearch下载 2.Logstash下载 3.Kibana ...

  2. Java继承实例解析

    Java继承 前言 继承是面向对象语法的三大特征之一.继承可以降低代码编写的冗余度,提高编程的效率.通过继承,子类获得了父类的成员变量和方法.一个子类如何继承父类的字段和方法,如何修改从父类继承过来的 ...

  3. 1001-MySQL学习-第一节自习课

    MySQL学习(第一节自习课) 一. 软件下载.安装 下载地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->installer-&g ...

  4. 一文彻底搞懂JavaScript中的prototype

    prototype初步认识 在学习JavaScript中,遇到了prototype,经过一番了解,知道它是可以进行动态扩展的 function Func(){}; var func1 = new Fu ...

  5. 出现bash: ifconfig:command not found的解决办法,即安装ifconfig命令(亲测有效)

    初装centos 7时,运行config报 command not found 错误, ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息,可是有些时候最小化安装CentOS ...

  6. python工具---snmp流量监控,自定义粒度,业务突发可视化

    现在主流监控软件和云平台提供的流量监控,监控粒度最小只能设置为1分钟,无法准确定位故障,特别是瞬时突发较大的业务 对比python的snmp库还是更喜欢用subprocess调用snmpwalk命令, ...

  7. 项目中导入本地jar包问题

    1. 问题 一个Maven项目,需要依赖一个本地jar包,以如下方式引用: <dependency> <groupId>xxx.sdk</groupId> < ...

  8. Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)

    前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...

  9. ex_Lucas定理

    Lucas定理(p为质数): \(C_n^m=C_{n/p}^{m/p}*C_{n\ mod\ p}^{m\ mod\ p}\) 可是p不为质数怎么办呢? ex_Lucas定理 (p不为质数) 思路 ...

  10. 聊聊 C# 中的多态底层 (虚方法调用) 是怎么玩的

    最近在看 C++ 的虚方法调用实现原理,大概就是说在 class 的首位置存放着一个指向 vtable array 指针数组 的指针,而 vtable array 中的每一个指针元素指向的就是各自的 ...