SSM框架之Mybatis第一天(入门)

一、Mybatis的概述

1. 框架是什么?

    1.1 半成品: 框架的作者给你封装了很多固定的内容,你提供一些可变的数据就能完成一项  工作
    1.2 经过验证的: 市面上的框架都应该是经过了企业级项目验证的
     1.3 具备一定功能的: 每种框架都是用来解决问题的

2. 框架的作用?

   2.1 简化开发: 让程序员少写、不写繁琐的、固定的、重复的代码
   2.2 降低耦合
   2.3 规范开发

3. 持久层学习了哪些技术,各有什么缺点?

3.1 JDBC:

       3.1.1 代码太繁琐、重复代码太多
       3.1.2 连接无法复用
       3.1.3 硬编码问题(数据库环境信息、sql信息)
       3.1.4 结果集的解析和封装代码非常繁琐

3.2 DBUtils:

优点:

       3.2.1 底层封装了JDBC代码,让重复代码变少了,开发更加简单
       3.2.2 配合连接池一起使用,从而解决连接无法复用的问题
       3.2.3 配合连接池一起使用的话,数据源信息(driver、username、password、url)就都写在连接池的配置文件中
       3.2.4 它底层的结果集解析和封装交给ResultSetHandler去完成,使用者就不用关心结果集的解析和封装代码

缺点:

       3.2.1 如果不进行二次封装,持久层是直接依赖dbutils框架的,增强了程序的耦合度
       3.2.2 功能较为简单: 例如无法执行性查询自增长主键
       3.2.3 SQL信息是以硬编码的方式写在Java代码中

4. 为什么我们要学习Mybatis(优势)?

   4.1 Mybatis 封装了所有的JDBC代码,我们在使用Mybatis的时候甚至可以一句代码不写(持久层只需要提供接口,不需要实现类)
   4.2 Mybatis内置连接池,解决连接复用问题
   4.3 Mybatis底层会解析结果集、封装结果集
   4.4 Mybatis 的全局配置文件中可以配置数据源信息(driver、username、password、url)
   4.5 Mybatis的映射配置文件中可以配置SQL信息
   4.6 Mybatis 功能强大: 动态SQL在持久层完成复杂操作、缓存、懒加载等等

5. 什么是Mybatis

   5.1 Apache开发的,最早这个项目的名字叫做iBatis
   5.2 Mybatis是一个半自动的ORM框架

6. 什么是ORM?

   Object Relational Mapping 对象关系映射

7. 什么是半自动? 什么是全自动?

7.1 如果需要自己编写SQL语句才能建立ORM映射那就是半自动

7.2 如果不需要自己编写SQL语句框架自动给你建立ORM映射关系就是全自动


二、Mybatis的入门

1. 目标: 执行根据id查询一条数据,将结果集封装到POJO

2. 回顾一下POJO应该具备一些东西:

   2.1 属性私有
   2.2 为私有属性提供公有的get和set方法
   2.3 重写toString()方法,便于打印
   2.4 必须有无参构造函数,可以有有参构造函数
   2.5 基本数据类型建议声明成包装类型

3. 数据建模:

   3.1 物理建模: 创建数据库、创建表
   3.2 逻辑建模: 创建POJO

4. 命名规则:

   4.1 表的字段采用"_"命名,例如:emp_name、emp_id、emp_salary
   4.2 POJO类的属性采用驼峰命名法,例如: empName、empId、empSalary
   4.3 表名通常以t: t_user、t_emp等等

5. 创建持久层接口

6. 引入数据库相关依赖

7. 创建mybatis的全局配置文件: 配置数据库环境信息

   7.1 全局配置文件的路径,建议放在resources根目录下
   7.2 全局配置文件的名字任意,建议叫做mybatis-config.xml
   7.3 引入全局配置文件的约束(方便编写的时候提示)
   7.4 配置数据库环境信息

8. 创建mybatis的映射配置文件: 配置SQL信息

   8.1 一个持久层接口就对应一个映射配置文件,映射配置文件的文件名建议和持久层接口的名字保持一致
   8.2 映射配置文件的路径,建议放在resources/mappers文件夹下
   8.3 引入映射配置文件的约束(方便编写的时候提示)
   8.4 建立映射配置文件与接口的对应: 映射配置文件的根标签mapper中的namespace属性的值设置为对应接口的全限定名
   8.5 在映射配置中建立起与接口中的方法的对应:

       8.5.1 类型对应: 查询方法就对应select标签
       8.5.2 名称对应: 方法名对应标签的id属性
       8.5.3 返回值类型对应(只针对查询方法): 标签的resultType属性对应方法返回值的全限定名

   8.6 在标签体中编写要执行的SQL语句, 在SQL语句中使用#{}获取方法传入的参数

9. 在全局配置文件(mybatis-config.xml)中加载映射配置文件

10. 编写测试代码


三、使用mybatis的步骤总结

1. 引入依赖: mysql驱动、mybatis的依赖
2. 创建POJO(使用lombok)
3. 创建持久层接口,在持久层接口中编写方法。
4. 创建mybatis的全局配置文件:

   4.1 环境信息配置
   4.2 指定要加载的映射配置文件路径

5. 创建mybatis的映射配置文件(真正的核心):

   5.1 建议放在resources/mappers目录下
   5.2 文件名建议和对应的接口名一致
   5.3 建立映射配置文件与接口的对应关系: mapper标签的namespace的值为接口的全限定名
   5.4 接口中的方法与映射配置文件中的子标签建立对应关系: 类型对应、名称对应

6. 编写测试代码

四、引入日志框架(不喜欢可以不加,加了有助于我们发现错误)

1. 引入log4j的依赖
2. log4j的配置文件必须放在resources根路径下
3. log4j配置文件的文件名必须叫做log4j.xml或者log4j.properties

五、参数输入

1. 要往SQL中传入一个数据: 使用单个简单类型参数, #{任意字符串}获取
   在有的mybatis的版本中,就算是单个简单类型参数,我们也要使用@Param("取名")然后根据名     字获取

2. 要往SQL中传入多个数据

   2.1 多个简单类型的参数

       2.1.1 #{arg0}
       2.1.2 #{param1}
       2.1.3 使用@Param("取名"),然后#{名}

   2.2 POJO类型参数中封装多个数据: #{POJO的属性名}     


   2.3 Map类型参数封装多个数据: #{Map的key}        

3. #{}获取参数与${}获取参数的对比

3.1 区别:

    3.1.1 #{}  在SQL语句中用问号占位符,获取参数之后再往SQL语句设置参数
    3.1.2 ${}  直接将参数拼接在SQL语句中

3.2 怎么选择?

    3.2.1 绝大部分情况是使用#{}
    3.2.2 如果表名、字段名这些需要动态传入到SQL语句中,此时只能用${}直接拼接
             因为"?"占位符不能用在表名、字段名的地方

 


 

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值