1. 框架是什么_为什么框架都要有配置文件
(1) 什么是框架? 常用的框架有哪些?
框架是偷懒的程序员将代码进行封装,之后进行重复使用的过程。
(2) 为什么框架都要有配置文件?
框架其实是一个半成品,以连接数据库为例,连接数据库使用的驱动、url、用户名、密码。
程序员在使用框架的时候,必须要告诉框架需要的信息,通常以配置文件的方式告知,一般来说,多数会使用xml作为框架的配置文件。
因此,在使用框架开发代码时,需要编写配置文件,代码的编写反而会减少。
框架都是第三方提供的,提供的都是jar包。因此使用框架前,必须将框架涉及的jar包导入项目中。
2. 常用的框架有哪些_MyBatis框架简介
(1) 列举你常用的框架, 并简单描述其主要功能.
常见的java开发的框架
MyBatis,ORM框架(Object Relation Mapping),底层是对JDBC进行了封装。
Spring,是一个容器,管理框架。
SpringMVC 分层开发框架
Struts2 类似于SpringMVC
Hibernate类似于MyBatis
SSH-->Struts2 + Spring + Hibernate
SSM-->Spring + SpringMVC + MyBatis
(2) 你如何理解MyBatis框架?
MyBatis是一个ORM框架,用于操作数据库,底层是对JDBC进行的封装。
MyBatis的前身是iBatis,是Apache下的一个开源项目。现在被迁移到了GitHub上。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
3. 搭建MyBatis环境使用的jar包详解
(1) MyBatis框架搭建需要哪些jar包?
使用MyBatis需要先导入的包:
asm-3.3.1.jar
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
(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:日志包
mysql-connector-java-5.1.47.jar:驱动包
4. 编写MyBatis核心配置文件
(1) MyBatis的核心配置文件有什么特点, 配置时有什么注意事项?
是一个XML文件,命名无要求,位置无要求,一般命名为mybatis-cfg.xml。放在src目录下。
mybatis配置文件的dtd约束
Window--preferences--XML--catalog
(2) 什么是数据源? 在核心配置文件中, 如何配置数据源?
mybatis配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//http://mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
用于指定使用什么环境
用于指定使用的环境的id
-->
<environments default="developer">
<!--
用于配置开发环境
id:环境的唯一识别码,叫啥不重要,只要不重复
-->
<environment id="developer">
<!--事务管理器
type:用于设置Mybatis采用什么方式管理事务
JDBC表示采用和JDBC一样的事务管理方式
-->
<transactionManager type="JDBC"></transactionManager>
<!--
数据源/连接池,用于配置连接池和数据库连接的参数
type:用于设置mybatis是否采用连接池技术。
POOLED表示采用连接池技术
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bjsxt"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
5. MyBatis映射文件编写及扫描配置
(1) MyBatis映射文件编写及扫描配置
在mybatis中,推荐使用mapper作为包名,我们只需要写一个映射配置文件即可。UserMapper.xml,用于定义要执行的SQL语句,同时设定返回结果的类型。选中文件+F2快速重命名。
mybatis映射文件编写及扫描配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//http://mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
用于指定使用什么环境
用于指定使用的环境的id
-->
<environments default="developer">
<!--
用于配置开发环境
id:环境的唯一识别码,叫啥不重要,只要不重复
-->
<environment id="developer">
<!--事务管理器
type:用于设置Mybatis采用什么方式管理事务
JDBC表示采用和JDBC一样的事务管理方式
-->
<transactionManager type="JDBC"></transactionManager>
<!--
数据源/连接池,用于配置连接池和数据库连接的参数
type:用于设置mybatis是否采用连接池技术。
POOLED表示采用连接池技术
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bjsxt"/>
<property name="username" value="root"/>
<property name="password" value="l35367944"/>
</dataSource>
</environment>
</environments>
<!-- 扫描映射文件 -->
<mappers>
<mapper resource="cn/bjsxt/mapper/UserMaper.xml" />
</mappers>
</configuration>
(2) 介绍映射文件中常用的标签及配置时的注意事项.
配置映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//http://mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace;命名空间。类似于包的作用。可以随意定义,但不可重复。一般情况下写全限定路径。
mybatis是通过命名空间+id来的管理SQL语句的
-->
<mapper namespace="com.bjsxt.mapper.UserMapper">
<!--
select标签用于编写查询语句
id:用于标记sql查询语句的唯一标识,类比为方法名
resultType:用于设定返回结果的类型(全限定路径)。
如果返回结果是集合,要写集合泛型的类型。
-->
<select id="selAll" resultType="com.bjsxt.pojo.User">
select * from t_user
</select>
</mapper>
6. 测试代码_selectList实现查询所有的操作
(1) 使用MyBatis时用到的核心对象是什么? 如何创建?
Session对象
创建session对象代码:
//加载mybatis核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//构建一个sqlSessionFactory工厂对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
//通过工厂打开SQLSession
SqlSession session=factory.openSession();
//通过session执行查询操作
List<User> list=session.selectList("cn.bjsxt.mapper.UserMapper.selAll");
System.out.println(list);
//关闭资源
session.close();
(2) 什么是JUnit? 如何使用?
JUnit测试方法:
首先导入JUnit资源
右键项目--> Build Path--> add Libraries-->JUnit
JUit测试配置好的方法,在方法上添加注解:@test,光标定位在方法名上右键--run as--JUnit
@org.junit.Test
public void testSelAll() {
System.out.println(123);
}
如果能正常输出123,则表示方法可用。
7. MyBatis核心配置文件详解
(1) MyBatis核心配置文件中有哪些常用标签? 如何配置?
标签configuration这是配置文件的根元素,所有的其他元素都要在这个标签下使用。
Environments:用于管理所有的环境,并可以指定默认使用哪个环境,通过default属性来指定。
environment用于配置环境,id属性用于唯一标识当前环境。在environments下至少要有一个environment标签。
transactionManager:用于配置事务管理器。
type属性:用于指定MyBatis采用何种方式管理事务。
JDBC:表示MyBatis采用与原生JDBC一致的方式管理事务。
MANAGED:表示将事务管理交给其他容器进行,例如Spring。
DataSource:用于配置数据源,设置MyBatis是否使用连接池技术,并且配置数据库连接的四个参数。
type属性:用于设置MyBatis是否使用连接池技术。
POOLED:表示采用连接池技术。
UNPOOLED:表示不采用连接池。这个数据源的实现是每次请求时简单的打开关闭连接。
JNDI:使用其他容器(例如Spring)提供的数据源。
Property:用于配置数据库连接参数(driver,url,username,password) 两个元素name和value
(2) 为什么要进行映射扫描? 如何配置?
用于扫描mapper信息
mapper映射配置文件详解:
Mapper:根元素
namespace属性:用于指定命名空间,mybatis是通过namespace+id的方式来定位SQL语句的,所以必须指定namespace,通常namespace被配置为全限定路径。
select标签:用于定义查询语句。
id属性:用于唯一表示SQL语句,类似于方法的方法名。
resultType属性:用于设定查询返回的数据类型,要写类型的全限定路径。如果返回的是集合类型,要写集合的泛型的类型。
8. MyBatis三个查询方法_selectList_selectOne_selectMap
(1) 请描述selectList, selectOne和selectMap三个方法的作用及其中的关系.
selectList:用于查询多条数据的情况,返回值是一个list集合,如果没有查询到结果会返回一个没有元素的空集合。
selectOne:用于查询单条数据的情况,返回值是一个对象,如果没有查到任何数据,返回null。
selectMap:用于查询多条数据的情况,多条数据要形成一个Map集合。如果查不到结果,返回一个空Map集合,不是null。
(2) 简述selectMap方法如何使用? 以及返回结果的组成方式.
selectMap调用selectList的标签来获得元素结果集,再指定元素中某一属性作为key值组成键值对保存在Map集合中。
(3) Log4J简介_Log4J的五个日志级别
Log4j是Apache提供的一款记录日志的工具。
Log4j既可以将日志信息打印到控制台,也可以打印输出到一个日志文件中。
Log4j可以定制日志的输出格式。
Log4j可以定制日志级别。
(4) Log4J简介_Log4J的五个日志级别
日志级别由高到低依次为:
FATAL:致命的,表示非常严重的错误,一般是系统错误。
ERROR:错误,表示代码错误,比较严重。
WARN:警告,不影响程序的运行,但是可能存在风险。
INFO:信息,表示一些普通的输出信息。
DEBUG:调试,表示程序员人为的一些调试信息。
9. Log4J配置文件详解_日志格式简介_日志对象的获取及使用
(1) 常用的log4j日志格式符号有哪些? 代表什么含义?
%m massage输出错误消息
%c 返回出错的类名
%l 返回出错行
%d{yyyy-MM-dd HH:mm:ss} 返回出错时间
%n 换行
(2) 如何使用log4j记录日志?
1-导包
log4j-1.2.17.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
2-配置文件:使用一个叫log4j.properties的配置文件,会设定log4j的设置信息,例如日志级别,日志输出方式,日志格式等等。
Log4j配置文件
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, CONSOLE,LOGFILE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:/test.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
测试log4j
public class TestLog4j {
public static void main(String[] args) {
//获取日志对象
Logger logger = Logger.getLogger(TestLog4j.class);
//5个日志级别对应5种输出方法,方法名和级别名一致
logger.fatal("系统崩溃了!!!");
logger.error("错误!!!");
logger.warn("警告!!!");
http://logger.info("普通消息~");
logger.debug("调试中~~~");
}
}
10. 如何使用log4j记录日志?
(1) 如何在MyBatis中使用Log4J? 如何配置
导入3个上述的log4j相关jar包
将eclipse安装文件中log4j.properties文件复制到项目的src文件夹中。
在日志配置文件log4j.properties中修改
log4j.rootCategory = ERROR,C0NSOLE
单独设置SQL语句的输出级别为DEBUG级别
Log4j.logger.cn.bjsxt.mapper.UserMapper.selAll=DEBUG
要在environments标签之前配置settings标签:
<!-- settings标签 -->
<settings>
<!-- 设置mybatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
(2) 如何设置MyBatis中日志的级别? 有几种级别?
在日志配置文件log4j.properties中修改
log4j.rootCategory = ERROR,C0NSOLE
一共3种级别:方法级别、类级别、包级别
#单独设置SQL语句的输出级别为DEBUG级别
#方法级别
#log4j.logger.cn.bjsxt.mapper.UserMapper.selAll=DEBUG
#类级别
#log4j.logger.cn.bjsxt.mapper.UserMapper=DEBUG
#包级别
log4j.logger.cn.bjsxt.mapper=DEBUG
11. properties标签实现软编码
(1) 什么是软编码? 有什么好处?
properties标签用于加载外部的properties文件。
方便代码的扩展和维护。
(2) properties标签如何配置?
properties标签在根结点<configuration>下第一个子节点的位置插入:(在<setting子节点之前>)
<configuration>
<!-- properties标签 -->
<properties resource = "db.properties" />
<!-- settings标签 -->
<settings>
<!-- 设置mybatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<dataSource标签可以引用外部配置文件db.properties>(注意:外部配置文件的键名最好不要包括“.”,否则可能造成读取错误)
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
外部配置文件db.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bjsxt
username=root
password=root