初识MaBatis
1.编写xml文件,xml文件位置不限,名字不限制
(1)transactionManager
在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):
JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。
MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false
(2)<property name="password" value="${db.password}"/>这里并不是EL表达式,只是类似于EL表达式的代码
(3)<mapper resource="com/bjsxt/pojo/UserMapper.xml"></mapper>,这里读取User Mapper文件也不限制文件位置,但是只可以用/来表示其位置
(4)<settings><setting name="logImpl" value="LOG4J"/></settings>这里是使用MyBatis中的日志,可以获取日志信息。
(5)<properties resource="db.properties" />这里是为了读取配置文件,进行软配置,方便修改。
<?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>
<!--加载资源文件-->
<properties resource="db.properties" />
<!--指定MyBatis运行时环境的配置-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--配置环境 environments, 配置并管理多个环境-->
<environments default="dev">
<!--配置一个环境-->
<environment id="dev">
<!--事务管理器, MyBatis采用和JDBC一致的方式进行事务的管理-->
<transactionManager type="JDBC" />
<!--数据源, 使用连接池技术-->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!--扫描映射-->
<mappers>
<mapper resource="com/bjsxt/pojo/UserMapper.xml"></mapper>
</mappers>
</configuration>
2.在这里从配置文件里面读取
(1)读取的配置文件都是从本模块或者本项目src下面开始读取
(2)sqlSession.selectList("a.b.c.selAll")这里读取并执行sql语句的时候,前面是<mapper namespace="a.b.c">这里的 namespace,也可以把这个属性值省略掉。
public void testSelAll() throws Exception {
// Resources - 资源加载工具, 默认去classpath加载资源
InputStream is = Resources.getResourceAsStream("mybatis.xml");
// SqlSessionFactoryBuilder - 工厂构建者
// SqlSessionFactory - 会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// SqlSession - 会话, 用于所有mybatis中操作方法的调用
SqlSession sqlSession = factory.openSession();
// 调用方法进行查询
List<User> list = sqlSession.selectList("a.b.c.selAll");
System.out.println(list);
for (User user : list) {
System.out.println(user);
}
// 关闭资源
sqlSession.close();
}
3.这里是类的映射配置文件,名字,位置没有限制
(1)reg_time regTime,这里这样起名字是为了可以和实体类中的属性同名,方便获取,暂时只可以这样获取
<?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="a.b.c">
<select id="selAll" resultType="com.bjsxt.pojo.User">
select id, username, password, realname, age, birthday, reg_time regTime from tb_user
</select>
</mapper>
4.这里是日志文件,文件名字是log4j.properties不可改,位置必须在src路径下,也不可改。
(1)log4j.logger.a.b.c=TRACE,这里的a.b.c是mapper配置文件的namespace属性,只要是TRANCE之上的都可以打印出来
# 设置log4j的根(整体)日志级别, 同时指定日志输出的位置: CONSOLE表示控制台, LOGFILE表示日志文件
log4j.rootCategory=ERROR, CONSOLE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
# 设置局部位置的日志级别
log4j.logger.a.b.c=TRACE
# 设置控制台日志输出的格式
# 常用符号
# %m: message, 日志消息
# %n: 回车换行
# %d: 日期时间, 可以自定义日期时间格式, %d{yyyy-MM-dd HH:mm:ss}
# %p: 日志级别
# %l: 日志发生的具体位置
# %c: 定位, 包名.类名
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- [%p] %m%n
# 设置日志文件中日志输出的格式
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