第一章初始mybatis框架
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包
- mybatis-3.5.1.jar
- 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框架相关推荐
- y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章
第一章 一.引言 mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释) 二.概述 mybatis让程序将 ...
- 第一章 自定义MVC框架
第一章 自定义MVC框架 1.1 MVC模式设计 组成:Model:模型,用于数据和业务的处理 View :视图,用于数据的显示 Controller ...
- 零基础玩转C语言系列第一章——初始C语言(上)
目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...
- 第一章 初识 MyBatis
概念:优秀持久层框架:实体类和SQL语句之间建立映射关系 与hibernate区别 :自动生成sql语句,并且建立实体类和数据表的映射. MyBatis基本要素:核心对象 核心配置文件 S ...
- (有小案例)初始Mybatis框架及使用
框架 框架(Framework)是一种编程模型,是一组相互协作的类和工具集合,它们一起提供了一种通用的方法来解决特定领域中的问题.框架一般会提供一些预定义的解决方案和编程范例,开发人员可以基于这些方案 ...
- 第一章:ORM框架发展历程和MyBatis的核心应用
ORM框架的发展历史与MyBatis的高级应用 一.ORM框架的发展历程 1. JDBC操作 1.1 JDBC操作的特点 最初的时候我们肯定是直接通过jdbc来直接操作数据库的,本地数据库我们有一张t ...
- 第一章 : javaScript框架分类及主要功能
从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的j ...
- 第一章 cucumber测试框架综述
1.1 什么是BDD(行为驱动开发) 首先了解一个概念,BDD(BehaviorDrivenDevelopment:行为驱动开发)为用户提供了从 开发人员和客户的需求创建测试脚本的机会.因此,开始 ...
- 大白话聊框架设计(入门篇) | 第一章:Filter实现框架拦截
文章目录 前言 1Filter实现框架拦截 1.1配置自定义Filter 1.2创建一个Filter 1.3创建一个ActionMapping 1.4创建一个ActionMapper 1.5创建一个W ...
最新文章
- SpringMVC——通俗易懂讲讲Ajax~
- [译]理解HTTP/304响应
- mysql怎样查询表的信息!
- CodeForces - 1514D Cut and Stick(线段树/随机数)
- Linux的capability深入分析(2)
- jquery name选择器_Jquery--1
- java数据读取容量,spring batch使用reader读数据的内存容量问题详解
- 为什么使用事务?如何实现声明式事务?
- HTML第五章课后作业,第五章 组合逻辑电路 课后习题答案详解 资料资料资料.pdf...
- mysql sql语句 查询文章表,评论表(根据评论表文章评论次数排序查询出文章count(),group,left join)
- 如何解决Win10应用商店代码:0x80131500错误
- 移动开发之我见 ——移动WEB
- R语言ggplot2可视化:gganimate包transition_time函数创建动态散点图动画(gif)、shadow_wake函数配置动画的渐变效果(gradual falloff)拖尾效应
- P3374 【模板】树状数组 1( 单点修改 + 区间查询 )
- xampp 配置php版本,XAMPP各个版本配置
- url链接还原:将url 短链接(加密、压缩后的链接)还原出原始链接
- Android 扫码登录案例
- matlab print 保留颜色,科学网—解决matlab saveas printf保存图片时 colorbar中的字体颜色发生改变 - 肖鑫的博文...
- 实践是检验真理的唯一标准 (转)
- iOS比较常用的第三方框架