mybatis 封装jdbc访问代码的一个框架 (hibernate)  ORM对象关系映射

SpringMVC:用来封装servlet的框架 (struts)

Spring:体系整合框架,其他框架的粘合剂

框架:整个或者部分系统的可重用设计,

优点:1、灵活可配置:将写死的代码放到配置文件中

2、复用性高:将反复使用的代码抽取封装

3、对底层细节进行封装,提供了方便调用的api

主要内容:

1 mybatis 介绍

2 入门 :使用jdbc操作数据库存在的问题

    Mybatis的架构

    Mybatis的入门程序

3 Dao的开发

    原始dao的开发

    动态代理方式

4 SqlMapConfig.xml文件说明

一。介绍

持久层框架,对jdbc的操作进行封装,只需关注sql本身,不用处理加载驱动、创建连接、创建语句等过程

通过xml过着注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并且通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后油mybatis框架执行sql语句,并将结果映射成java对象并且返回。

二、

2.1使用jdbc的问题总结:

  导入jar

  创建工程

  步骤:

    1、加载驱动

    2、获取连接

    3、创建语句对象

    4、设置sql语句

    5、设置sql参数(preparedStatement)

    6、执行sql

    7、关闭资源

  缺点:资源浪费、硬编码不容易维护、preparedStatement占位符不移维护、结果集的解析硬编码

实例:

1、配置数据库jdbc

2、配置mybatis的配置文件

3、创建entity类 User

4、为User配置user。xml文件

其中的id使用#{id} or #{value}

5、测试数据库连接和数据获取

控制台提示logger 需要打印日志

Mybatis的增删改查

    模糊查询:

     

    在运行的java类中调用 session.selectList方法获取 List<User>

     添加对象:

      

使用标签实现插入数据后返回主键的值 主键回填

    

修改记录:

session.udpate commit

      删除用户:

      

        session.delete

Mybatis 工作原理以及流程:

    

优点:

1 节省资源

2 sql语句在xml文件中和java‘代码分离

3 将对象自动映射到sql语句 通过parameterType定义输入参数类型

4 将sql执行结果映射到java对象 通过stateme 的resultType定义输出结果的类型

使用反射机制

mybatis两种方式:

1.原始的dao方法

2.使用mapper代理进行开发

(1)namespace和Dao接口的名称保持一致(原本是实体类的名称)

代理实现类的流程

总结:mybatis是基于动态代理实现的,cglib.jar   

原始Dao开发中的问题:

  重复代码 SQLSession

  不存在硬编码问题(方法和id之类的东西)

使用mapper代理,不需要创建DaoImpl就可以实现

mapper动态代理的开发规范:

  只需要编写mapper接口(Dao 接口)

    1、mapper.xml文件中的namespace与mapper接口的类路径相同

    2、mapper接口方法名和mapper.xml文件中的每个sql的id

    3、parameterType

    4、resultType

mapper.xml映射文件:

  内容同user.xml文件 修改namespace的值为UserMapper接口路径,并将UserMapper.xml文件放大classpath下的mapper目录

当mapper文件特别多的时候 可以再mybatis的配置文件中批量扫描

mybatis配置文件中的其他属性

别名标签

别名默认使用类名的小写

简单类型 支持自动别名

  

Mybatis--01的更多相关文章

  1. Hello Mybatis 01 第一个CRUD

    What's the Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...

  2. 框架学习-MyBatis(01)

    1.MyBatis是持久层框架 什么是持久化: 狭义:把数据永久性的保存到数据当中 广义:针对于数据库的所有操作都称为持久化操作,CreateReadUpdateDelete操作 2.有哪些持久层框架 ...

  3. MyBatis 01 概述

    官网 http://www.mybatis.org/mybatis-3/zh/index.html GitHub https://github.com/mybatis/mybatis-3 简介 MyB ...

  4. mybatis 01: 静态代理 + jdk动态代理

    背景 有时目标对象不可直接访问,只能通过代理对象访问 图示: 示例1: 房东 ===> 目标对象 房屋中介 ===> 代理对象 你,我 ===> 客户端对象 示例2: 运营商(电信, ...

  5. 01 Mybatis 的配置和使用

    一.Mybatis 是什么 MyBatis 是一个支持普通SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装.MyB ...

  6. 编程从入门到放弃(Java)

      1.Java入门篇 1.1 基础入门和面向对象 1.1.1 编程基础 [01] Java语言的基本认识 [02] 类和对象 [03] 类的结构和创建对象 [04] 包和访问权限修饰符 [05] 利 ...

  7. Spring 08: AOP面向切面编程 + 手写AOP框架

    核心解读 AOP:Aspect Oriented Programming,面向切面编程 核心1:将公共的,通用的,重复的代码单独开发,在需要时反织回去 核心2:面向接口编程,即设置接口类型的变量,传入 ...

  8. 01.MyBatis入门

        MyBatis入参考文档:http://mybatis.org/mybatis-3/zh/  1.使用MyBatis前的准备 1.增加Maven依赖 <dependency> &l ...

  9. 01 mybatis框架整体概况(2018.7.10)-

    01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...

  10. mybatis第二天01

    MyBatis第二天01 1.高级结果映射 1.1根据视频案例,分析表之间的关系 数据模型分析 1. 明确每张表存储的信息 2. 明确每张表中关键字段(主键.外键.非空) 3. 明确数据库中表与表之间 ...

随机推荐

  1. golang byte与rune区别

    先看代码 package main import ( "fmt" ) func main() { var a = "hello world" var b = & ...

  2. Python复习笔记(八)迭代器和生成器和协程

    1. 迭代器 1.1 可迭代对象 判断xxx_obj是否可以迭代 在第1步成立的前提下,调用 iter 函数得到 xxx_obj 对象的 __iter__ 方法的返回值 __iter__ 方法的返回值 ...

  3. [Android] Android 卡片式控件CardView的优雅使用

    [Android] Android 卡片式控件CardView的优雅使用 CardView是在安卓5.0提出的卡片式控件 其具体用法如下: 1.在app/build.gradle 文件中添加 comp ...

  4. Polymer初探

    Polymer是什么? Polymer英文为 n.聚合物:多聚体 网络高分子:聚合体:高分子聚合物 应用在Web组件场景, 表达的是, 一个一个小的Web组件,可以通过此框架聚合为一个 整个页面. h ...

  5. XXE攻防

    一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文档类型定义(可 ...

  6. c# 适配器批量修改

    DataTable dt; //在方法外部申明数据表SqlDataAdapter adapter; //在方法外部申明数据适配器 查询方法adapter = new SqlDataAdapter(Sq ...

  7. ansible学习笔记二

    Ad-Hoc命令: 所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义.Ad-Hoc只是官方对Ansible命令的一种称谓. 从 ...

  8. html页面高度问题

    首先,上图 说明 1. clientHeight大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内 ...

  9. 【JS】获取一个月份有多少天

    new Date(year, month, 0).getDate() 通过 Date 构造函数传入年份.月份.零,然后通过调用获取日期函数即可获取当前月份有多少天 new Date(2019, 2, ...

  10. Element-ui 中dialog的使用方法

    <template> <div> <el-button type="text" @click="dialogFormVisible = tr ...