mybatis查询日期和log4j2配置

Posted 贝隆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis查询日期和log4j2配置相关的知识,希望对你有一定的参考价值。

查询数据库表中某一个日期的所有数据,通过传入日期参数来查询。数据库表结构如下:

mybatis配置

在web.xml中引用spring-mybatis.xml配置

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:conf/spring-mybatis.xml</param-value>
    </context-param>

在spring-mybatis.xml中引入数据库操作mapping文件和mybaits配置文件

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

        <property name="typeAliasesPackage" value="com.risk.model"/>
        <property name="mapperLocations" value="classpath*:mybatis/*.xml"/>
        <property name="configLocation" value="classpath:conf/mybatis-config.xml" />

    </bean>

在mybatis-config.xml中设置log4j2的配置

<?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="LOG4J2"/>
    </settings>

</configuration>

查询日期xml和代码

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.risk.dao.HighLimitDao">
    <resultMap type="com.risk.entity.HighLimitEntity" id="hResultMap" >
        <id property="index" column="index"/>
        <result property="date" jdbcType="DATE" column="date"  javaType="java.util.Date" />
        <result property="open" column="open"/>
        <result property="high" column="high"/>
        <result property="low" column="low"/>
        <result property="volume" column="volume"/>
    </resultMap>    

    <select id="query" parameterType="java.util.HashMap" resultMap="hResultMap">
        select *
        from limit
        where 1=1
        <if test="date != null">
            AND date=#{date}
        </if>
    </select>
</mapper>

对应的java实现类

public class HighLimitEntity {
    private Long index;
    private Date date;
    private String code;
    private Double open;
    private Double close;
    private Double high;
    private Double low;
}

@Repository
public class HighLimitDaoImpl implements HighLimitDao {
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    public List<HighLimitEntity> query(Map<String, Object> params){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List<HighLimitEntity> entities = sqlSession.selectList("com.risk.dao.HighLimitDao.query", params);
        sqlSession.close();
        return entities;
    }
}

Map<String, Object> params = new HashMap<String, Object>();

Date date = new Date();
Date target = null;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

try {
String dateString = dateFormat.format(date);
System.out.println("date:" + dateString);
target = dateFormat.parse(dateString);
System.out.println("date:" + target);
params.put("date", target);
}catch (Exception e){
e.printStackTrace();
return null;
}
highLimitDao.query(params)
 

log4j2.xml

如果想增加调试日志,看Mybatis中有什么错误,可以在log4j2中定义sql查询的日志,打印出查询过程。log4j2.xml中定义了dao的路径,level是debug,这样就可以打印出查询语句到日志中

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <File name="File" fileName="../logs/test.log" append="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
    </appenders>

    <loggers>
        <logger name="com.risk.test" level="info" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <logger name="log4j.logger.java.sql.Statement" level="info" additivity="false">
            <appender-ref ref="File"/>
        </logger>
        <Logger name="com.risk.dao" level="debug" additivity="false">
            <AppenderRef ref="File"/>
        </Logger>

        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="File"/>
        </root>
    </loggers>
</configuration>
View Code

 

以上是关于mybatis查询日期和log4j2配置的主要内容,如果未能解决你的问题,请参考以下文章

log4j2怎样配置才能在控制台打印mybatis的sql日志

mybatis查询结果date?

MyBatis多表联查

mybatis模糊查询

MyBatis入门第2天--高级映射与查询缓存

MyBatis高级特性