Mybatis的日志工厂<setting name=“logImpl“ value=““/>

 

日志可以帮我们把重要的信息输出出来,这样出错的时候,可以借助日志可以查看哪里有问题

比如下面这个问题,我先查出状态为0的数据,却一直查出来的是全部的数据

如果没有日志,又不报错,类似这样的问题,如果不知道哪里 出错,要找出问题那简直就是费时费力,所以还是要把sql日志输出出来,这样就能知道问题在哪里了

Mybatis的日志工厂我们先看官方文档Mybatis官网

在mybatis的核心配置文件,添加日志配置

<setting name="logImpl" value="STDOUT_LOGGING"/>

STDOUT_LOGGING是标准日志。mybatis自带的

再次运行单元测试就可以看到日志输出了

至于我们上面遇到的问题,这里也说明了

Mybatis动态传参数值为0时,条件无效的问题

<?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="callSettersOnNulls" value="true" /> <!-- 在全局范围内"启用或禁用任何高速缓存" - 应该是除了session;默认值true --> <setting name="cacheEnabled" value="false" /> <!-- 是否允许一个statement返回多个ResultSets,但是需要驱动程序支持。默认值true --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 是否可以使用别名获取,具体取决于驱动程序是否支持。默认为true --> <setting name="useColumnLabel" value="true" /> <setting name="autoMappingBehavior" value="PARTIAL" /> <!-- 默认执行方式。三种方式:SIMPLE默认没有特殊处理;REUSE重用PreparedStatements;BATCH重用statements和进行批量更新。默认值:SIMPLE --> <setting name="defaultExecutorType" value="SIMPLE" /> <!-- 设置Statement默认数据库响应超时时间,单位为妙。 --> <!-- <setting name="defaultStatementTimeout" value="5000" /> --> <!-- 嵌套结果映射,是否使用rowbounds进行分页,建议不要使用rowbounds进行分页,特别是SQL执行返回结果很大的情况下(因为它用的是返回后截取-逻辑分页)。默认值false --> <setting name="safeRowBoundsEnabled" value="false" /> <!-- 进行自动映射时,数据以下划线命名,如数据库返回的"order_address"命名字段是否映射为class的"orderAddress"字段。默认为false --> <setting name="mapUnderscoreToCamelCase" value="false" /> <!-- MyBatis使用本地缓存来提高重复查询的速度。两个选项:SESSION,和我们hibernate里的session类似,在同一个session中共享;STATEMENT,只在同一个statement中共享。默认值SESSION --> <setting name="localCacheScope" value="SESSION" /> <!-- 有些驱动程序在返回值为NULL时需要指定JDBC类型,大部分情况下是:NULL、VARCHAR或OTHER。默认值OTHER --> <setting name="jdbcTypeForNull" value="OTHER" /> <setting name="logImpl" value="LOG4J2" /> </settings> <typeAliases> <typeAlias alias="HashMap" type="java.util.HashMap" /> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /> <!-- 增加的 Class --> <!-- 每一个Bean对应一个别名 --> </typeAliases> <typeHandlers> <!-- BLOB 转 String 功能 --> <typeHandler javaType="String" jdbcType="BLOB" handler="com.depower.inter.database.ConvertBlobTypeHandler" /> </typeHandlers> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC" /> <!-- 可分为三种参数设定: . POOLED . UNPOOLED . JNDI --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="poolMaximumActiveConnections" value="100" /> <property name="poolMaximumCheckoutTime" value="20000" /> <property name="poolMaximumIdleConnections" value="4" /> <property name="poolTimeToWait" value="20000" /> <!-- 将开启ping机制。 --> <property name="poolPingEnabled" value="false" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mysql.stmt.xml" /> </mappers> </configuration> 如果是tdengine如何配置
09-11
<?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"> <!--6.编写核心配置文件--> <!--configuration 配置--> <configuration> <!--引入配置文件--> <properties resource="jdbc.properties"></properties> <properties resource=".properties"></properties> <!-- 2. 全局设置:开启驼峰命名自动转换(brand_name → brandName) --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <typeAliases> <!-- 起别名 --> <!--name属性的值是实体类所在包 映射文件中的resultType 可以不用包名 不区分大小写 实体类名的小写--> <package name="com.itgaohe.pojo"/> <!-- 扫的的是实体类的包 对包下的所有实体类起别名--> </typeAliases> <!--environments 操作环境--> <environments default="development"> <!--environment 单个操作环境--> <environment id="development"> <!--transactionManager 事务管理类型 JDBC--> <transactionManager type="JDBC"></transactionManager> <!--dataSource 数据库连接池--> <dataSource type="POOLED"> <!--property 配置信息--> <!-- <property name="driver" value="com.mysql.cj.jdbc.Driver"/>--> <!-- <property name="url" value="jdbc:mysql:///mybatis?characterEncoding=utf-8&serverTimezone=UTC"/>--> <!-- <property name="username" value="root"/>--> <!-- <property name="password" value="123456"/>--> <!--识别配置文件中的内容--> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!--mappers 将映射文件加载到配置文件中--> <mappers> <!-- <mapper resource="com/itgaohe/mapper/UserMapper.xml"></mapper>--> <!-- 代理开发: 包扫描 自动加载 指定包下的所有Mapper 接口和对应的映射文件--> <package name="com.itgaohe.mapper"/> </mappers> </configuration>
最新发布
11-29
package com.unit15.entity.test; import com.unit15.entity.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.Reader; import java.util.List; public class test { public static void main(String[] args) throws IOException { //读取配置文件 Reader reader = Resources.getResourceAsReader("mybatisConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //sqlSession 用于执行SQL语句 SqlSession sqlSession = sqlSessionFactory.openSession(); try{ List<User> user = sqlSession.selectList("mapper.UserMapper.findAllUser"); for(User u:user){ System.out.println("id:"+u.getId()+"用户名:"+u.getName()); } }catch(Exception e){ e.printStackTrace(); } } } <?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="mapper.UserMapper"> <select id="findAllUser" resultType="com.unit15.entity.User"> select * from test </select> </mapper><?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> <!-- 控制台打印sql语句 --> <setting name="logImpl" value="STDOUT_LOGGING"/> <!-- 开启二级缓存--> <setting name="cacheEnabled" value="true"/> <!--开启全局的延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> </settings> <!-- development : 开发模式 work : 工作模式--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <!-- value属性值引用db.properties配置文件中配置的值 --> <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="mapper/UserMapper.xml" /> </mappers> </configuration> db.driver=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/javadb?serverTimezone=UTC&userUnicode=true&charsetEncoding=utf-8 db.username=root db.password=123456
10-24
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林高禄

你打不打赏,我都会一直写博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值