zoukankan      html  css  js  c++  java
  • Mybatis-03

    一、继续上一部分的日志工厂

    1、Log4j

    什么是log4j:

    log4j是apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台,文件,GUI组件

    我们也可以控制每一条日志的输出格式

    通过定义每一条日志信息的级别,我们能够更加细致的控制日志的生成过程

    通过一个配置文件来灵活的进行配置,而不需要修改应用的代码

    流程:

    先导入log4j的包

            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>

    写log4j的配置文件

    #将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
    log4j.rootLogger=DEBUG,console,file
    
    #控制台输出的相关设置
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.Threshold=DEBUG
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
    
    #文件输出的相关设置
    log4j.appender.file = org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=./log/space.log
    log4j.appender.file.MaxFileSize=10mb
    log4j.appender.file.Threshold=DEBUG
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
    
    #日志输出级别
    log4j.logger.org.mybatis=DEBUG
    log4j.logger.java.sql=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.ResultSet=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    在Mybatis核心配置中配置log4j为日志的实现

    <settings>
            <setting name="logImpl" value="LOG4J"/>
        </settings>

    log4j的使用:运行测试类,跟默认的日志s没啥区别

     生成的日志文件

     二、limit实现分页

     //limit实现分页
        List<User> getUserLimit(Map<String,Integer> map);
    <!--因为现在我们的数据库列名和实体类的属性没有对齐,所以直接resultType会导致密码查不出来,所以在这里映射一下-->
    
    <resultMap id="UserName" type="User">
        <result column="pwd" property="password"/>
    </resultMap>
    <select id="getUserLimit" parameterType="map" resultMap="UserName">
        select * from user limit #{startIndex},#{pageSize}
    </select>
    
    
    <!--这里是正常情况下-->
    <select id="getUserLimit" parameterType="map" resultType="user">
         select * from user limit #{startIndex},#{pageSize}
    </select>
      @Test
        public void getUserLimit(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            Map<String, Integer> map = new HashMap<>();
    
            map.put("startIndex",0);
            map.put("pageSize",2);
    
            List<User> user = mapper.getUserLimit(map);
    
            for (User user1 : user) {
                System.out.println(user1);
            }
    
    
            sqlSession.close();
    
        }

    三、使用注解开发

        //根据id拿到一个用户
        @Select("select id,name,pwd as password from user")
        List<User> getUserById();
    <!--使用注解开发就不需要mapper.xml了 直接在mybatis配置中配置mapper 通过class找到对应的接口就好了-->    
    <mappers>
            <mapper class="space.urbeautiful.dao.UserMapper"/>
    </mappers>
        @Test
        public void getUserById() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userById = mapper.getUserById();
            for (User user : userById) {
                System.out.println(user);
            }
            sqlSession.close();
        }

    使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

  • 相关阅读:
    MySQL与Oracle 差异比较之七其它
    MySQL与Oracle 差异比较之七用户权限
    MySQL与Oracle 差异比较之六触发器
    MySQL与Oracle 差异比较之五存储过程&Function
    MySQL与Oracle 差异比较之四条件循环语句
    MySQL与Oracle 差异比较之三函数
    MySQL与Oracle 差异比较之二基本语法
    MySQL与Oracle 差异比较之一数据类型
    Nginx、fastCGI、php-fpm关系梳理
    RTSP服务器之————rtsp-server(轻量级RTSP / RTP流媒体服务器)
  • 原文地址:https://www.cnblogs.com/jzspace/p/13179977.html
Copyright © 2011-2022 走看看