今天是接触框架的第一天,首先呢,要了解框架是什么,这是个耳熟能详的词。
框架是什么?常用的框架有哪些?
1. 什么是框架
a) 框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程.
b) 框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用户名, 密码必须告知框架.
c) 程序员在使用框架的时候,通常以配置文件的方式告知框架需要的信息,多数会使用 xml 作为框架的配置文件.
d) 因此, 在使用框架开发代码时, 需要编写配置文件, 代码的编写反而会减少.
e) 框架都是第三方提供的, 提供的都是 jar 包. 因此, 使用框架前, 必须将框架涉及的 jar 包导入项目中.
f) 常见的 java 开发的框架
MyBatis, ORM 框架, 底层是对 jdbc 进行了封装
a) MyBatis 是一个 ORM 框架, 用于操作数据库, 底层是对jdbc 进行的封装.
b) MyBatis 的前身是 iBatis, 是 Apache 下的一个开源项目.现在被迁移到了 GitHub 上.
c) 中文网址:
http://www.mybatis.org/mybatis-3/zh/getting-startwww.mybatis.org
ed.html
d) MyBatis 各版本下载地址:
mybatis/mybatis-3github.com
Spring, 是一个容器
SpringMVC, 分层框架
Struts2, 功能类似于 SpringMVC
Hibernate, 功能类似于 MyBatis
MyBatis 环境搭建
MyBatis 环境搭建 之jar包详解
1.1 创建项目
java project
1.2 导入 jar 包
1.2.1 MyBatis 核心 jar
mybatis-3.2.7.jar
1.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 日志
1.2.3 驱动 jar
mysql-connector-java-5.1.30.jar
MyBatis 核心配置文件
1.1 要求
是一个 xml 文件, 命名无要求, 位置无要求, 一般叫mybatis.xml, 放在 src 目录下.
1.2 dtd
a) MyBatis 官方提供了 dtd 约束, 方便 xml 的编写
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"
>
b) 关联 mybatis 配置文件的 dtd 约束
1.3 配置文件内容
MyBatis映射文件编写及扫描配置
在 MyBatis 中, 推荐使用 mapper 作为包名, 我们只需要写一个映射配置文件即可。UserMapper.xml, 用于定义要执行的 SQL 语句, 同时设定返回结果的类型。
在核心配置文件中添加 mapper 扫描
<!--扫描映射 -->
<mappers >
<mapper resource="com/sxt/mapper/UserMapper.xml"/>
</mappers>
MyBatis 中常用的三个查询方法
1.1 selectList
用于查询多条数据的情况, 返回值是一个 list 集合. 如果没有查到任 何数据, 返回没有元素的集合(空集合, 不是 null)
1.2 selectOne
用于查询单条数据的情况, 返回值是一个对象. 如果没有查到任何数 据, 返回 null
public void testSelOne() throws IOException{
//加载MyBaties中的核心配置文件
InputStream is = Resources.getResourceAsStream("mybaties.xml");
//构建SqlSessionFactory工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//通过工厂打开SqlSession
SqlSession session = factory.openSession();
//通过session执行操作
//selectOne
User user = session.selectOne("com.sxt.mapper.UserMapper.selOne");
System.out.println(user);
//关闭连接
session.close();
}
1.3 selectMap
用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指 定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)
LOG4J学习
1.1 log4j 简介
a) log4j 是 Apache 提供的一款记录日志的工具
b) log4j 既可以将日志信息打印在控制台, 也可以打印输出
到一个日志文件中.
c) log4j 可以定制日志的输出格式
d) log4j 可以定制日志级别
1.2 日志级别
1.2.1 FATAL 致命的, 表示非常严重的错误, 一般是系统错误
1.2.2 ERROR 错误, 表示代码错误, 比较严重
1.2.3 WARN 警告, 不影响程序的运行, 但是可能存在风险.
1.2.4 INFO 信息, 表示一个普通的输出信息
1.2.5 DEBUG 调试, 表示程序员人为的一些调试信息
LOG4J配置文件详解
1. log4j 的使用
1.1 导包
log4j-1.2.17.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
1.2 配置文件
使用一个叫 log4j.properties的配置文件, 会设定log4j的设置信息, 例如日志级别, 日志输出方式, 日志格式等等。
日志的输出格式
#Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下
# %m 输出代码中指定的消息
# %M 输出日志发生的方法名
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %r 输出自应用启动到输出该log信息耗费的毫秒数
# %c 输出所属的类目,通常就是所在类的全名
# %t 输出产生该日志事件的线程名
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
# %L 输出日志发生的位置
# %F 输出类名
log4j的5种日志级别测试
package com.sxt.test;
import org.apache.log4j.Logger;
public class TestLog4j {
public static void main(String[] args) {
//获取Log对象
Logger logger = Logger.getLogger(TestLog4j.class);
//5个日志分别对应5个输出方法,方法名和级别名一样
logger.fatal("系统崩溃了》》》");
logger.error("发生了错误?");//System.out.println();
logger.warn("警告!");
logger.info("输出消息");
logger.debug("调试....");
}
}
MyBatis 对 log4j 的支持
1.1 通过<settings>开启 log4j 的支持
<settings>用于设置 MyBatis 在运行时的行为方式, 例如: 缓存, 延迟加载, 日志等.
<!-- settings标签 -->
<settings>
<!-- 设置MyBatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J" />
</settings>
1.2 局部调整日志级别, 定制日志的输出
properties标签实现软编码
<properties>标签 用于加载外部的 properties 文件
使用方式 :