• MyBatis入门学习(四)


    日志

    日志工厂

    如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的助手!

    参考官方文档

    在MyBatis中具体使用哪一个日志实现,在设置中设定!

    STDOUT_LOGGING标准日志输出

    在mybatis核心配置文件中,配置我们的日志

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

    Log4J

    我们用的更多的日志为log4j;

    使用log4j步骤:

    1、导入包依赖

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    

    如果要手动导入的话需要导入两个jar包(idea会自动导入另一个)

    2、编写log4j的配置文件

    ### 设置###
    log4j.rootLogger = debug,stdout,D,E
    
    ### 输出信息到控制抬 ###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    
    ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = ./log/log.log
    log4j.appender.D.Append = true
    log4j.appender.D.Threshold = DEBUG
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    
    ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File =./log/error.log
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    

    3、修改日志实现为LOG4J,注意大小写问题

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

    4、假设我们要使用LOG4J的类取打印日志

    import com.star.mapper.RMapper;
    import com.star.pojo.User;
    import com.star.utils.MybatisUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.log4j.Logger;
    
    public class MyTest {
    
        static Logger logger = Logger.getLogger(MyTest.class);
    
        public static void main(String[] args) {
            SqlSession session = MybatisUtils.getSession();
            RMapper mapper = session.getMapper(RMapper.class);
    
            System.out.println("2345675432");
    
            //通过log4j 可以将日志实现细粒度的控制;
            logger.debug("2345675432");
            logger.info("2345675432");//提示信息
            logger.error("2345675432");//错误信息
    
            //属性名和字段名不一致
            User user = mapper.selectById(2);
            System.out.println(user);
        }
    }
    
    

    测试结果:

    分页

    分页可以提高服务器性能,按照一小部分一小部分的来处理我们的数据!

    1、使用Limit分页

    limit语法

        -- startIndex:起始数据的索引(从0开始)     pageSize:页面大小
        Select * from user limit startIndex,PageSize
    

    接口中的方法

        //参数如果超过两个,可以使用map来进行传递 key value
        List<User> selectUserByLimit(Map<String,Integer> map);
    

    配置文件

        <select id="selectUserByLimit" parameterType="map" resultType="user">
            select * from user limit #{startIndex},#{pageSize};
        </select>
    

    测试类

    package com.star.mapper;
    
    import com.star.pojo.User;
    import com.star.utils.MybatisUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class UserMapperTest {
    
        @Test
        public void selectUserByLimitTest(){
            SqlSession session = MybatisUtils.getSession();
            UserMapper mapper = session.getMapper(UserMapper.class);
    
            Map<String, Integer> map = new HashMap<String, Integer>();
    
            //分页  起始数据的索引(从0开始)     页面大小
            map.put("startIndex",1);
            map.put("pageSize",3);
    
            List<User> users = mapper.selectUserByLimit(map);
            for (User user : users) {
                System.out.println(user);
            }
        }
    }
    

    测试结果:

    2、RowBounds分页

    接口中的方法

        List<User> selectUserByLimit();
    

    配置文件

        <select id="selectUserByLimit" parameterType="map" resultType="user">
            select * from user;
        </select>
    

    测试类

    package com.star.mapper;
    
    import com.star.pojo.User;
    import com.star.utils.MybatisUtils;
    import org.apache.ibatis.session.RowBounds;
    import org.apache.ibatis.session.SqlSession;
    import java.util.List;
    
    public class UserMapperTest {
        
        public static void main(String[] args) {
            SqlSession session = MybatisUtils.getSession();
    
            RowBounds rowBounds = new RowBounds(1, 3);
    
            // selectList(方法的路径)
            // 通过Java操作查询
            List<User> list = session.selectList("com.star.mapper.UserMapper.selectUserByLimit", null, rowBounds);
            for (User user : list) {
                System.out.println(user);
            }
        }
    }
    

    测试结果:

    我们可以通过 selectXXX 执行具体的某一个方法,得到结果,在这种方式下,可以通过Java实现分页!

  • 相关阅读:
    wpf Behavior
    wpf Trigger
    语法糖
    Lambda 表达式
    wpf 3D动画
    IEnumerable接口学习
    Delegates, Events, and Anonymous Methods 委托、事件与匿名方法
    wpf 平滑效果随记
    软件工程第一篇博客
    记考研高数第一课
  • 原文地址:https://www.cnblogs.com/lmx-181028/p/12358893.html
Copyright © 2020-2023  润新知