mybatis框架

  • ORM:
    • 常见的ORM框架:
      • ----认识MyBatis:
      • ----开发步骤:
      • ----认识配置文件:
      • ---认识映射文件:
      • -----加载映射文件:

ORM:

ORM(Object/Relational Mapping),即对象/关系映射.ORM是一类框架的总称,这类框架完成了对象数据到关系型数据的映射.使开发人员能够以面向对象的思想,操作数据库.

常见的ORM框架:

1 .MyBatis,
2. Hibernate,
3. 3.TopLink...

----认识MyBatis:

一。概念:
MyBatis是一种基于Java的持久层框架,支持定制化SQL,存储过程以及高级映射的持久层框架.最初是apache的开源项目–iBatis,2010年由apache迁移到google,并改名为MyBatis.在2013年11月由google迁移到GitHub

二。特点:
1.MyBatis是一个轻量级ORM框架,只需mybatis-*.jar和数据库驱动器即可运行.
2.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
3.将SQL代码与程序代码分离,利于SQL重用和修改
4.MyBatis不会对应用程序或数据库的设计强加任何影响,提高应用的灵活性

三。mybatis官网 [可以查看mybatis框架的帮助文档]:
https://mybatis.org/mybatis-3/zh/index.html

四。mybatis下载框架:
https://github.com/mybatis/mybatis-3/releases

----开发步骤:

第1步: 添加jar包

  1. mybatis-3.5.1.jar
  2. mysql-connector-java-5.1.22-bin.jar

第2步: 编写配置文件
注意: 配置文件名称和位置不限,但是通常称为mybatis-config.xml,存入到src下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置环境-->
<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="驱动器入口类的全名称"/><property name="url" value="url地址信息"/><property name="username" value="账户"/><property name="password" value="密码"/></dataSource></environment>
</environments>
<!--添加映射文件-->
<mappers><mapper resource="包名1/包名2/.../文件名.xml"/>
</mappers>
</configuration>

第3步: 编写映射文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--在当前XML中编写针对User的CURD操作命令-->
<mapper namespace="命名空间[类似包的作用]">
<select/insert/update/delete id="业务标记名" resultType="实体类全名"      parameterType="占位符类型">SQL命令
</select/insert/update/delete>
</mapper>

备注: 映射文件用于实现 实体对象与数据表字段的映射关系

第4步: 编写启动程序

  //获得MyBatis的配置文件: 数据库信息,映射文件信息[SQL]
InputStream is=Resources.getResourceAsStream(配置文件位置/配置文件名.xml");//参数 为配置文件的位置: a/mybatis-config.xml
//基于配置信息创建SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
//获得SqlSession: 连接数据库
SqlSession session=factory.openSession();//数据库操作: CURD
session.CURD方法名("命名空间.业务标识名");//映射文件中的命名空间和业务标识名
//执行映射文件中的哪个SQL//提交事务
session.commit();
//关闭连接
session.close();

----认识配置文件:

介绍
MyBatis的配置文件中包含了影响MyBatis行为和属性的信息,控制MyBatis的整体运行方式.配置文件中主要配置数据源[驱动类,URL,账号,密码],事务管理,加载指定映射文件.
说明:
1.MyBatis配置文件的名称和位置自定义.
2.MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
3.MyBatis配置文件顶层结构如下:
基本格式:

-----配置标签:

<environments>
作用:
声明一组运行环境.[支持多数据库]
属性:
default: 设置默认运行环境,属性值为某个<environment>的id值.<environment>
作用:
定义1个运行环境
属性:
id: 设置当前环境的匿称,名称任意.通常为development和work.<transactionManager>:
作用:
指定事务管理器,MyBatis含有2种事务管理器[JDBC和MANAGED]
属性:
type: JDBC[使用JDBC的提交和回滚设置],MANAGED[使用其他容器管理事务提交和回滚]<dataSource>:
作用:
该标签通过标准的JDBC数据源接口来配置JDBC连接对象的资源
属性:type: 设置数据源的类型,属性值为POOLED|UNPOOLED|JNDIPOOLED:使用连接池.从连接池中取出连接,关闭时将该连接放回连接池UNPOOLED: 不使用连接池.每次都打开新连接,关闭时将彻底关闭该连接JNDI: 从其他容器中获得连接<property>:
作用:
定义数据源的指定属性和值
属性:
name: 属性名.在<dataSource>中,name通常为driver/url/username/password或其他
value: 属性值.

|-----配置数据源:
方式1: 直接在property中写明参数值

<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>

方式2:

<!--配置环境-->
<properties><property name="mydriver" value="com.mysql.jdbc.Driver"/><property name="myurl" value="jdbc:mysql://localhost:3306/mydb"/><property name="myusername" value="root"/><property name="mypassword" value="123456"/>
</properties>
<environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--配置事务管理的方式: JDBC,MANAGED--><!--配置数据源: 账户/密码  URL  驱动器  连接数据库 --><dataSource type="POOLED"><!--type定义数据连接方式: POOLED[使用连接池]|UNPOOLED|JNDI--><property name="driver" value="${mydriver}"/><!--Class.forName("com.mysql.jdbc.Driver")--><property name="url" value="${myurl}"/><property name="username" value="${myusername}"/><property name="password" value="${mypassword}"/></dataSource></environment>
</environments>

方式3:在外部创建一个新的propertiet文件在文件中储存配置数据源

<properties resource="DBSource.properties" />
<environments default="development"><environment id="development"><transactionManager type="JDBC"/><!--配置事务管理的方式: JDBC,MANAGED--><dataSource type="POOLED"><!--type定义数据连接方式: POOLED[使用连接池]|UNPOOLED|JNDI--><property name="driver" value="${db.driver}"/><!--Class.forName("com.mysql.jdbc.Driver")--><property name="url" value="${db.url}"/><property name="username" value="${db.user}"/><property name="password" value="${db.password}"/></dataSource></environment>
</environments>

方式4: 了解

—认识映射文件:

一。介绍:
MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC代码,减少了95%的代码量

二。说明:
1.映射文件名称和位置任意,不要求必须与POJO类在同一位置
2.MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
3.MyBatis映射文件顶层结构如下:

三。基本格式:

<mapper namespace="匿名空间"><select/insert/update/delete... id="业务标识名" resultType="封装结果的对象[实体类全名]" parameterType="占位符的来源">SQL命令</select/insert/update/delete等等>
</mapper>

四。说明:
1.namespace: 表示命名空间,类似Java包的作用.[在旧版中可选,在新版中必须配置]
2.id: 设置业务操作匿名,方便程序中调用.
3.parameterType: 指出将要传入SQL命令中的占位符的类型,可以是普通类型或自定义类.
4.resultType: 指出SQL命令执行结果的类型.若结果为集合,该属性值为元素的类型名.
5.statementType: 设置SQL执行对象的类型: STATEMENT,PREPARED[默认值],CALLABLE.
6.SQL命令末尾后的分号,可选

五。占位符:
1.介绍:
Mybatis映射文件中的SQL命令,支持以占位符方式设置字段的值.同JDBC那样,当执行SQL命令时需要额外指出占位符的值.

2.格式:

#{占位符名}
#{uname}

3.说明:

  • .占位符的值可以来自实体对象,Map集合,普通数据
  • .若占位符的值来自普通数据,占位符名 任意. [仅1个占位符,比如 id]
  • .若占位符的值来自实体对象,占位符名 必须为对象的属性名
  • .若占位符的值来自Map集合,占位符名 必须为键名

|-----结果映射
介绍:
MyBatis自动将POJO对象的属性与查询结果集中字段名或添加/修改/删除中占位符名映射,实现对象与表的映射关系.
同时,MyBatis提供了手动设置POJO对象属性与执行结果映射的方式: [resultMap]

解决字段名与属性名不同,无法映射:

方式1: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。

select id,   username as name,    sex,age,address from user

方式2: 通过[resultMap]标签来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

<resultMap>
<select id="" resultType="" resultMap="resultMap匿名A">SQL命令
</select>
<!--自定义映射规则-->
<resultMap id="resultMap匿名A" type="实体类全名">//用id属性来映射主键字段<id property="主键属性" column="主键字段名" />//用result属性来映射非主键字段<result property="普通属性" column="字段名" />
</resultMap>

-----加载映射文件:

方式1: resource方式加载映射文件

格式:
<mapper resource="映射文件路径">
resource: 使用相对类路径,指出映射文件的位置.比如 bean/User.xml

方式2:class方式这里需要注意:接口类 和映射文件放在同一个目录下,并文件名要一致

格式:
<mapper class="映射文件路径">
class: 使用类全名,指出映射器接口的位置.比如: bean.UserMapper[UserMapper为接口

方式3:url方式

格式:
<mapper url="映射文件路径">
url: 使用绝对路径,指出映射文件的位置.比如: file:///bean/User.xml

方式4:包扫描加载映射文件 : 接口类 和映射文件放在同一个目录下,并文件名要一致

格式:
<package name="包名" />
说明:
将指定包中所有接口类,在MyBatis中注册.
注意: mapper接口和映射文件名称要相同,且在同1目录下

|----自定义别名:

 格式:<typeAliases></typeAliases>方式1: 定义指定类的别名 [定义单个类的别名]<typeAlias type="类全名" alias="别名[名称任意]" />代码实例:···<!-- mybatis-config.xml 中 --><typeAlias type="com.someapp.model.User[设置前类名称]" alias="User[设置后的类名称]"/>//设置user类的类全名别名为User.<!-- SQL 映射 XML 中 --><select id="selectUsers" resultType="User[设置后的类别名]">select id, username, hashedPasswordfrom some_tablewhere id = #{id}</select>方式2: 批量定义类别名 <typeAliases><package name="包名" /></typeAliases>定义后别名等于类名,不区分大小写,但建议使用java命名规则 首字母小写。

第一章初始mybatis框架相关推荐

  1. y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章

    第一章 一.引言 mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释) 二.概述 mybatis让程序将 ...

  2. 第一章 自定义MVC框架

    第一章  自定义MVC框架 1.1 MVC模式设计     组成:Model:模型,用于数据和业务的处理           View :视图,用于数据的显示           Controller ...

  3. 零基础玩转C语言系列第一章——初始C语言(上)

    目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...

  4. 第一章 初识 MyBatis

    概念:优秀持久层框架:实体类和SQL语句之间建立映射关系 与hibernate区别    :自动生成sql语句,并且建立实体类和数据表的映射. MyBatis基本要素:核心对象   核心配置文件  S ...

  5. (有小案例)初始Mybatis框架及使用

    框架 框架(Framework)是一种编程模型,是一组相互协作的类和工具集合,它们一起提供了一种通用的方法来解决特定领域中的问题.框架一般会提供一些预定义的解决方案和编程范例,开发人员可以基于这些方案 ...

  6. 第一章:ORM框架发展历程和MyBatis的核心应用

    ORM框架的发展历史与MyBatis的高级应用 一.ORM框架的发展历程 1. JDBC操作 1.1 JDBC操作的特点 最初的时候我们肯定是直接通过jdbc来直接操作数据库的,本地数据库我们有一张t ...

  7. 第一章 : javaScript框架分类及主要功能

      从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的j ...

  8. 第一章 cucumber测试框架综述

    1.1 什么是BDD(行为驱动开发)   首先了解一个概念,BDD(BehaviorDrivenDevelopment:行为驱动开发)为用户提供了从 开发人员和客户的需求创建测试脚本的机会.因此,开始 ...

  9. 大白话聊框架设计(入门篇) | 第一章:Filter实现框架拦截

    文章目录 前言 1Filter实现框架拦截 1.1配置自定义Filter 1.2创建一个Filter 1.3创建一个ActionMapping 1.4创建一个ActionMapper 1.5创建一个W ...

最新文章

  1. SpringMVC——通俗易懂讲讲Ajax~
  2. [译]理解HTTP/304响应
  3. mysql怎样查询表的信息!
  4. CodeForces - 1514D Cut and Stick(线段树/随机数)
  5. Linux的capability深入分析(2)
  6. jquery name选择器_Jquery--1
  7. java数据读取容量,spring batch使用reader读数据的内存容量问题详解
  8. 为什么使用事务?如何实现声明式事务?
  9. HTML第五章课后作业,第五章 组合逻辑电路 课后习题答案详解 资料资料资料.pdf...
  10. mysql sql语句 查询文章表,评论表(根据评论表文章评论次数排序查询出文章count(),group,left join)
  11. 如何解决Win10应用商店代码:0x80131500错误
  12. 移动开发之我见 ——移动WEB
  13. R语言ggplot2可视化:gganimate包transition_time函数创建动态散点图动画(gif)、shadow_wake函数配置动画的渐变效果(gradual falloff)拖尾效应
  14. P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
  15. xampp 配置php版本,XAMPP各个版本配置
  16. url链接还原:将url 短链接(加密、压缩后的链接)还原出原始链接
  17. Android 扫码登录案例
  18. matlab print 保留颜色,科学网—解决matlab saveas printf保存图片时 colorbar中的字体颜色发生改变 - 肖鑫的博文...
  19. 实践是检验真理的唯一标准 (转)
  20. iOS比较常用的第三方框架

热门文章

  1. hdu 6396 Swordsman (技巧)
  2. 【小游戏】有意思的小游戏集合
  3. CDOJ 486 Good Morning 傻逼题
  4. 大二暑假周进度总结07
  5. elementUi、iview、ant Design源码button结构篇
  6. css(float浮动和clear清除)
  7. ionic移动开发流程api
  8. Hibernate 一级缓存,二级缓存,查询缓存
  9. uva10050-罢工
  10. loadrunner 场景设计-负载生成器管理