
1. 什么是框架
a)框架是偷懒的程序员将代码进行封装, 之后进行重复使用的过程.
b)框架其实是一个半成品, 以连接数据库为例, 连接数据库使用的驱动, url, 用户名, 密码必须告知框架.
c)程序员在使用框架的时候,通常以配置文件的方式告知框架需要的信息,多数会使用 xml 作为框架的配置文件.
d)因此, 在使用框架开发代码时, 需要编写配置文件, 代码的编写反而会减少.
e)框架都是第三方提供的, 提供的都是 jar 包. 因此, 使用框架前, 必须将框架涉及的 jar 包导入项目中.
1.1常见的 java 开发的框架
MyBatis, ORM 框架, 底层是对 jdbc 进行了封装
Spring, 是一个容器
SpringMVC, 分层框架
Struts2, 功能类似于 SpringMVC
Hibernate, 功能类似于 MyBatis
1.2 MyBatis 框架简介
Mybatis ——持久层框架
MyBatis 是一个 ORM 框架,(object relation mapping(对象关系映射)) 用于操作数据库, 底层是jdbc 进行的封装.
MyBatis 的前身是 iBatis, 是 Apache 下的一个开源项现在被迁移到了 GitHub 上
1.3 MyBatis 环境搭建 jar 包详解
1)先导入 MyBatis 核心 jar
mybatis-3.2.7.jar
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)最后导入驱动 jar
mysql-connector-java-5.1.30.jar
1.4.MyBatis 核心配置文件
实例
注意点任何框架都不能管理事务,只能在type中告诉它使用什么方式管理事务
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
用于指定使用哪个环境
default: 用于指定使用的环境id
-->
<environments default="dev">
<!--
用于配置开发环境
id: 环境的唯一识别码
-->
<environment id="dev">
<!--
事务管理器
type: 用于设置mybatis采用什么方式管理事务
JDBC表示采用和JDBC一样的事务管理方式
-->
<transactionManager type="JDBC"></transactionManager>
<!--
数据源/连接池, 用于配置连接池和数据库连接的参数
type: 用于设置mybatis是否采用连接池技术
POOLED表示MyBatis采用连接池技术
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/java505"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 扫描mapper文件 -->
<mappers>
<mapper resource="com/bjsxt/mapper/UserMapper.xml" />
</mappers>
</configuration>1.5 Mapper 映射文件
在 MyBatis 中, 推荐使用 mapper (JDBC中dao包)作为包名, 我们只需要写一个映射配置文件即可. 实体类名+Mapper.xml
namespace: 命名空间, 可以随意定义, 一般情况下要写全限定路径 MyBatis管理SQL语句是通过namespace+id来定位的
<mapper namespace="com.bjsxt.mapper.UserMapper"></mapper>
select标签用于编写查询语句 id: sql语句的唯一标识, 类比为方法名
resultType: 用于设定返回结果的类型(全限定路径) 如果返回结果是集合, 要写集合泛型的类型 <select id="selAll" resultType="com.bjsxt.pojo.User"> select * from t_user </select>
实例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.sxt.mapper.StudentMapper">
<select id="selectAll" resultType="cn.sxt.pojo.Student">
select * from test
</select>
</mapper>1.6 mybatis框架测试类的步骤
在Test类中获取SqlSession对象的三步
//加载mybatis核心配置文件
InputStream is= Resources.getResourceAsStream(“mybatis.xml”);
//获得SqlSessionFactory对象
SqlSessionFactory sf=new SqlSessionFactoryBuilder.build(is);
//通过工厂对象sf获得SqlSession对象
SqlSession session=sf.openSession();
最后通过session调用增删改查方法,MyBatis管理SQL语句是通过namespace+id来定位的
List<Student> stu=session.selectList("cn.sxt.mapper.StudentMapper.selectAll");
记得关闭session.close()1.7 框架使用步骤
1.导入需要的jar包
2.创建需要的包进行分层
3. 配置文件的编写mybatis.xml
4. 封装一个实体类(记得实现Serializable接口,添加序列化ID,它决定着是否能够成功反序列化)
5. 编写mapper映射文件StudentMapper.xml(指定命名空间,指定Sql 语句id,)
6.. 测试 创建SqlSession对象,让后通过SqlSession调用增删改查方法,
7.记得关闭资源
1.8 MyBatis三个查询方法
SelectList查询多个,返回一个list集合,查询不到,返回空集合[] 不返回null
selectOne 查询一个,返回一条信息 查询不到,返回null
SelectMap 查询多个,返回一个map集合 查询不到,返回空集合[] 不返回null.
2. Log4J的五个日志级别
FATAL:致命的, 表示非常严重的错误, 一般是系统错误
ERROR:错误, 表示代码错误, 比较严重
WARN:警告, 不影响程序的运行, 但是可能存在风险.
INFO:信息, 表示一个普通的输出信息
DEBUG:调试, 表示程序员人为的一些调试信息
2.1 Log4J配置文件详解_日志格式简介_日志对象的获取及使用
2.1.1常用的log4j日志格式符号

2.1.2如何使用log4j记录日志?
生成logger对象 Logger logger = Logger.getLogger(TestLog4j.class);
调用各个等级的方法 如:logger.debug("调试...")
2.2 properties标签实现软编码
用于加载外部的 properties 文件
先在src包下创建一个db.properties文件,然后在
<environments default="dir" />和<transactionManager/>之间加上
<properties resource="db.properties"></properties>
最后配置
<environments default="dir">
<environment id="dir">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>