概述
1.log4j详解
链接:https://blog.csdn.net/eagleuniversityeye/article/details/80582140
对于log4j的使用详解,这篇链接文章的博主总结的很详细!可以参考一下!
2.在mybatis中开启log4j日志步骤:
1.在 mybatis 全局配置文件中通过标签控制 mybatis 全局开关
2.在 mybatis.xml 中开启 log4j
2.1 必须保证有 log4j.jar
2.2 在 src 下有 log4j.properties
下面是我的配置文件(仅供参考)
# Set log4j.rootCategory=ERROR, CONSOLE ,LOGFILE
log4j.rootCategory=ERROR,LOGFILE
log4j.logger.a.b=DEBUG
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=%C %p %m %n
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=C:/Users/zhou'en'xian/Desktop/logs.txt
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{YYYY-MM-dd HH:mm:ss} %C %m %L %n
2.3在mybatis的全局配置文件按中的第一行加上如下代码(具体原因请参考官方文档)
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
此时全局配置文件如下(仅供参考);
<?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>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- transationManager的type取值:JDBC:使用原生的JDBC进行事务管理/MANAGED
2.MANAGED 把事务管理转交给其他容器(spring); -->
<dataSource type="POOLED">
<!-- dataSource的type取值:
1. POOLED 使用数据库连接池
2. UNPOOLED 不实用数据库连接池,和直接使用 JDBC 一样
3.JNDI :java 命名目录接口技术.
-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/my?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="xxxxxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="my/mapper.xml"/>
</mappers>
</configuration>
4.测试
xxxmapper.xml如下:
<?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">
<!--namespace是类名的全路径(包名+类名) -->
<mapper namespace="a.b">
<!-- id的值是类中的方法名;parameterType:是传入方法的参数类型;
resultType:方法的返回值类型(注意:如果方法返回值是 list,在 resultType 中写 List 的泛型,
如果泛型为类,必须写类的全路径(包名+类名)因为 mybatis是对 jdbc 封装,一行一行读取数据) -->
<select id="name" resultType="dao.Person">
select * from person
</select>
<select id="abc" resultType="dao.Person">
select * from person where id=9
</select>
<select id="abcd" resultType="dao.Person">
select * from person where age=18
</select>
</mapper>
测试代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisDemo {
public static void main(String[] args) throws IOException {
InputStream is =Resources.getResourceAsStream("mybatis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产 SqlSession
SqlSession session=factory.openSession();
/**List<Person> list =session.selectList("dao.Interface.name");
//表示数据查询结果封装在集合中
for (Person flower : list) {
System.out.println(flower.toString());
}**/
//Person person=session.selectOne("a.b.abc");
//System.out.println(person.toString());
Map<String,Person>map=session.selectMap("a.b.abcd","tele");
/*tele表示数据表中的列作为map中的Key的泛型
a.b.abcd定位mapper.xml中的SQL语句
其中该SQL语句中的resultType的值决定map中的value的泛型*/
Set<String>set=map.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()) {
String key=it.next();
Person value=map.get(key);
System.out.println(key+":"+value.toString());
};
session.close();
/**
* 1.selectList() 返回值为 List<resultType 属性控制>
1.1 适用于查询结果都需要遍历的需求
List<Flower> list = session.selectList("a.b.selAll");
for (Flower flower : list) {
System.out.println(flower.toString());
}
2.selectOne() 返回值 Object
2.1 适用于返回结果只是变量或一行数据时
int count = session.selectOne("a.b.selById");
System.out.println(count);
3.selectMap() 返回值 Map
3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.
3.2 Map<key,resultType 控制>
Map<Object, Object> map = session.selectMap("a.b.c","name123");
System.out.println(map);**/
}
}
测试结果:
1.控制台
2.文件夹
最后
以上就是昏睡帽子为你收集整理的在mybatis中使用log4j的全部内容,希望文章能够帮你解决在mybatis中使用log4j所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复