一、什么是框架

a)框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程.

b)框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用户名, 密码必须告知框架.

c)程序员在使用框架的时候,通常以配置文件的方式告知框架需要的信息,多数会使用 xml 作为框架的配置文件.

d)因此, 在使用框架开发代码时, 需要编写配置文件, 代码的编写反而会减少.

e)框架都是第三方提供的, 提供的都是 jar 包. 因此, 使用框架前, 必须将框架涉及的 jar 包导入项目中.

常见的 java 开发的框架

  • MyBatis, ORM 框架, 底层是对 jdbc 进行了封装
  • Spring, 是一个容器
  • SpringMVC, 分层框架
  • Struts2, 功能类似于 SpringMVC
  • Hibernate, 功能类似于 MyBatis

二、MyBatis 框架简介

a)MyBatis 是一个 ORM 框架, 用于操作数据库, 底层是对jdbc 进行的封装.

b)MyBatis 的前身是 iBatis, 是 Apache 下的一个开源项目.现在被迁移到了 GitHub 上.

c)中文网址:

http://www.mybatis.org/mybatis-3/zh/getting-started.html

d)MyBatis 各版本下载地址:

https://github.com/mybatis/mybatis-3/releases

特点:

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

三、MyBatis 环境搭建 jar 包详解

3.1 创建项目

java project

3.2 导入 jar 包

3.2.1 MyBatis 核心 jar

mybatis-3.2.7.jar

3.2.2 MyBatis 依赖的 jar

asm-3.3.1.jar 字节码解析包, 被cglib依赖

cglib-2.2.2.jar 动态代理的实现

commons-logging-1.1.1.jar 日志包

javassist-3.17.1-GA.jar 字节码解析包

log4j-1.2.17.jar 日志包

log4j-api-2.0-rc1.jar 日志

log4j-core-2.0-rc1.jar 日志

slf4j-api-1.7.5.jar 日志

slf4j-log4j12-1.7.5.jar 日志

3.2.3 驱动 jar

mysql-connector-java-5.1.30.jar

四、MyBatis 核心配置文件

1.要求

是一个 xml 文件, 命名无要求, 位置无要求, 一般叫mybatis.xml, 放在 src 目录下.

1.2 dtd

a) MyBatis 官方提供了 dtd 约束, 方便 xml 的编写

<!DOCTYPE configuration

b) 关联 mybatis 配置文件的 dtd 约束

1.3 配置文件内容

<?xml version="1.0" encoding="UTF-8"?>

五、Mapper 映射文件

在 MyBatis 中, 推荐使用 mapper 作为包名, 我们只需要写一个映射配置文件即可. UserMapper.xml, 用于定义要执行的 SQL 语句, 同时设定返回结果的类型.

<?xml version="1.0" encoding="UTF-8"?>

在核心配置文件中添加 mapper 扫描

<!-- 扫描mapper文件 -->

六、编写测试代码

需要先添加JUnit支持

实体类:

package 

测试类:

package 

代码查询结果

七、MyBatis 配置文件详解

1.1 <configuration>

这是配置文件的根元素, 所有的其他元素都要在这个标签下使用.

1.2 <environments>

用于管理所有的环境, 并可以指定默认使用哪个环境. 通过default 属性来指定.

1.3 <environment>

用于配置环境. id 属性用于唯一标识当前环境

1.4 <transactionManager>

用于配置事务管理器

在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):

  • JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。

1.4.1 type 属性

用于指定 MyBatis 采用何种方式管理事务

a) JDBC: 表示 MyBatis 采用与原生 JDBC 一致的方式管理事务

b) MANAGED: 表示将事务管理交给其他容器进行, 例如 Spring

1.5 <DataSource>

用于配置数据源, 设置 MyBatis 是否使用连接池技术, 并且配置数据库连接的四个参数

1.5.1 type 属性

用于设置 MyBatis 是否使用连接池技术

a) POOLED, 表示采用连接池技术

b) UNPOOLED, 表示每次都会开启和关闭连接, 不使用连接池技术

c) JNDI, 使用其他容器(例如 Spring)提供数据源

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 许多 MyBatis 的应用程序会按示例中的例子来配置数据源。虽然这是可选的,但为了使用延迟加载,数据源是必须配置的。

有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):

UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。虽然有点慢,但对于在数据库连接可用性方面没有太高要求的简单应用程序来说,是一个很好的选择。 不同的数据库在性能方面的表现也是不一样的,对于某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。UNPOOLED 类型的数据源具有以下属性。:

  • driver – 这是 JDBC 驱动的 Java 类的完全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
  • url – 这是数据库的 JDBC URL 地址。
  • username – 登录数据库的用户名。
  • password – 登录数据库的密码。
  • defaultTransactionIsolationLevel – 默认的连接事务隔离级别。
  • defaultNetworkTimeout – The default network timeout value in milliseconds to wait for the database operation to complete. See the API documentation of java.sql.Connection#setNetworkTimeout() for details.

作为可选项,你也可以传递属性给数据库驱动。只需在属性名加上“driver.”前缀即可,例如:

  • driver.encoding=UTF8

这将通过 DriverManager.getConnection(url,driverProperties) 方法传递值为 UTF8 的 encoding 属性给数据库驱动。

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:

  • poolMaximumActiveConnections – 在任意时间可以存在的活动(也就是正在使用)连接数量,默认值:10
  • poolMaximumIdleConnections – 任意时间可能存在的空闲连接数。
  • poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒(即 20 秒)
  • poolTimeToWait – 这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直安静的失败),默认值:20000 毫秒(即 20 秒)。
  • poolMaximumLocalBadConnectionTolerance – 这是一个关于坏连接容忍度的底层设置, 作用于每一个尝试从缓存池获取连接的线程。 如果这个线程获取到的是一个坏的连接,那么这个数据源允许这个线程尝试重新获取一个新的连接,但是这个重新尝试的次数不应该超过 poolMaximumIdleConnections 与 poolMaximumLocalBadConnectionTolerance 之和。 默认值:3 (新增于 3.4.5)
  • poolPingQuery – 发送到数据库的侦测查询,用来检验连接是否正常工作并准备接受请求。默认是“NO PING QUERY SET”,这会导致多数数据库驱动失败时带有一个恰当的错误消息。
  • poolPingEnabled – 是否启用侦测查询。若开启,需要设置 poolPingQuery 属性为一个可执行的 SQL 语句(最好是一个速度非常快的 SQL 语句),默认值:false。
  • poolPingConnectionsNotUsedFor – 配置 poolPingQuery 的频率。可以被设置为和数据库连接超时时间一样,来避免不必要的侦测,默认值:0(即所有连接每一时刻都被侦测 — 当然仅当 poolPingEnabled 为 true 时适用)。

JNDI – 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这种数据源配置只需要两个属性:

  • initial_context – 这个属性用来在 InitialContext 中寻找上下文(即,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么将会直接从 InitialContext 中寻找 data_source 属性。
  • data_source – 这是引用数据源实例位置的上下文的路径。提供了 initial_context 配置时会在其返回的上下文中进行查找,没有提供时则直接在 InitialContext 中查找。

和其他数据源配置类似,可以通过添加前缀“env.”直接把属性传递给初始上下文。比如:

  • env.encoding=UTF8

这就会在初始上下文(InitialContext)实例化时往它的构造方法传递值为 UTF8 的 encoding 属性。

1.6 <property>

用于配置数据库连接参数(driver, url, username, password)

1.7 <mappers>

用于扫描 mapper 信息

2. mapper 映射配置文件详解

2.1 <mapper>

根元素

2.1.1 namespace 属性

用于指定命名空间, mybatis 是通过 namespace+id 的方式来定位 SQL语句的, 所以必须指定namespace. 通常namespace被配置为全限定路径

2.2 <select>

用于定义查询语句(DQL)

2.2.1 id 属性

用于唯一表示 SQL 语句, 类似于方法的方法名

2.2.2 resultType 属性

用于设定查询返回的数据类型, 要写类型的全限定路径. 如果返回的是集合类型, 要写集合的泛型的类型.

八、MyBatis 中常用的三个查询方法

selectList

用于查询多条数据的情况, 返回值是一个 list 集合. 如果没有查到任何数据, 返回没有元素的集合(空集合, 不是 null)

@Test

selectOne

用于查询单条数据的情况, 返回值是一个对象. 如果没有查到任何数据, 返回 null

@Test

selectMap

用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)

@Test

九、LOG4J

log4j 简介

a) log4j 是 Apache 提供的一款记录日志的工具

b) log4j 既可以将日志信息打印在控制台, 也可以打印输出到一个日志文件中.

c) log4j 可以定制日志的输出格式

d) log4j 可以定制日志级别

日志级别

FATAL

致命的, 表示非常严重的错误, 一般是系统错误

ERROR

错误, 表示代码错误, 比较严重

WARN

警告, 不影响程序的运行, 但是可能存在风险.

INFO

信息, 表示一个普通的输出信息

DEBUG

调试, 表示程序员人为的一些调试信息

十、log4j 的使用

导包

log4j-1.2.17.jar

log4j-api-2.0-rc1.jar

log4j-core-2.0-rc1.jar

配置文件

使用一个叫 log4j.properties 的配置文件, 会设定 log4j 的设置信息, 例如日志级别, 日志输出方式, 日志格式等等.

# 

日志的输出格式

测试

package 

MyBatis 对 log4j 的支持

通过<settings>开启 log4j 的支持

<settings>用于设置 MyBatis 在运行时的行为方式,

例如: 缓存, 延迟加载, 日志等.

<!-- settings标签 -->

局部调整日志级别, 定制日志的输出

# 提高整体日志级别
log4j.rootCategory=ERROR, CONSOLE
# 单独设置SQL语句的输出级别为DEBUG级别
# 方法级别
# log4j.logger.com.bjsxt.mapper.UserMapper.selAll=DEBUG
# 类级别
# log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG
# 包级别
log4j.logger.com.bjsxt.mapper=DEBUG

mybatis 分页需要的jar包下载_064、MyBatis相关推荐

  1. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 urlify.cn/z2IFn2 推荐:https://www.xttblog. ...

  2. Mybatis的jar包下载地址

    Mybatis jar包下载地址:https://github.com/mybatis/mybatis-3/releases 与SpringMVC进行整合jar包下载地址:https://github ...

  3. hookup_2.10-0.2.3.jar包下载

    hookup_2.10-0.2.3.jar包下载地址,自己也做一个记录.同一时候也给须要的朋友提供一个方便,希望对大家有所帮助.下载地址:http://www.59biye.com/jar/cont/ ...

  4. idea中的pom文件中的jar包下载不了,手动下载jar包的方法

    问题描述: 在pom文件中添加依赖的时候,程序怎么着都是下载不了,而且实验了各种方式: IDEA引MAVEN项目jar包依赖导入问题解决 https://www.cnblogs.com/a845701 ...

  5. jackson的jar包下载

    没必要去csdn的下载频道去付付费下载 这里有最全最新的Jackson的jar包资源 jackson的jar包下载

  6. Maven远程仓库:pom依赖以及jar包下载

    Maven远程仓库:pom依赖xml配置以及jar包下载: 地址1: http://mvnrepository.com/ 地址2: http://172.16.163.52:8081/nexus/#w ...

  7. spring mvc学习(2):spring jar包下载

    jstl的jar包的下载 我们在使用spring框架的时候导入jstl标签库需要使用到jstl的jar包,假如没有加入到eclipse的lib目录下,使用alt + /的时候不会有提示,所以我们需要把 ...

  8. idea maven 仓库 jar 包下载不来下解决方案

    每次换一个新的环境写代码的时候,用 idea下载 maven 依赖 jar 包都是我无法言语的痛 像这样 或者是这样 maven总是能找到各种 jar 包让你下载不下来 经过无数次痛苦的尝试之后,终于 ...

  9. Hibernate 3.6.10 jar包下载链接

    新手深知找免费的困难,在这分享Hibernate 3.6.10 jar包下载链接 不仅有3.6.10 , 好像 3.*都有吧 链接: https://sourceforge.net/projects/ ...

最新文章

  1. 再见Python!Yann LeCun警告:深度学习需要新编程语言
  2. echarts 动态改变数据_Echarts的使用
  3. 在 Spring 4.3.9下升级 Velocity 1.7.x to Velocity 2.0.x 出现的问题
  4. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 插件标记实现
  5. matlab向量与x正方向的夹角_MIT—线性代数笔记25 对称矩阵和正定性
  6. 正交多项式族(勒让德多项式跟切比雪夫多项式)理论
  7. 递归 图 java,《算法图解》之递归
  8. checked jq 添加_jquery动态添加复选框.attr(“checked”,true)不起作用
  9. 并发编程实战——锁分段
  10. h3c服务器显示非法的文件,H3C License server 故障处理手册-5W201
  11. 20165328 第八周学习总结
  12. 非越狱iPad实现外接键盘全APP五笔输入(IOS14已自带五笔)
  13. python如何下载网易云付费音乐
  14. ISO9001-2008标准(中英文对照)
  15. 【游戏开发创新】用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)
  16. 怎么用计算机表示素数,在线质数(素数)计算器
  17. win10 软路由_千元完美的家用低功耗软路由:J4125 迷你电脑GK41开箱体验!又是播放器,也是服务型AIO!...
  18. 计算机中ram中文意思,ram是什么_ram是什么意思-太平洋IT百科
  19. 远程软件工程师的10个最佳实践
  20. 基础算法-生兔子(JAVA)

热门文章

  1. linux主题文件,美化你的Linux!23个精美Ubuntu主题下载
  2. 微信小程序云开发用户身份登录_云开发版的微信商城小程序第一章
  3. linux系统预定义变量有哪些,Shell预定义变量用法详解
  4. java文件分割合并_java实现文件分割与合并 类示例源码
  5. python查看工作目录_闲话python-36:文件系统操作
  6. java电话号码输入_使用可选字母前缀屏蔽输入到电话号码格式
  7. oracle报12541错误,记录一次oracle无缘无故就无监听,报TNS-12541等错误的问题
  8. 八年级上册计算机知识点总结,八年级数学上册知识要点归纳
  9. python安装没有pip选项_python-3.x – 在ubuntu上没有pip的python安装
  10. xshell通过隧道连接_工作常见问题--如何解决xshell远程连接自动断开的问题