MyBatis------日志&&分页&&使用注解开发

1.日志

分类:

  • SLF4J
  • LOG4J 【掌握】
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING 【掌握】
  • NO_LOGGING

以Log4j为例

什么是Log4j?

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
  • 我们也可以控制每一条日志的输出格式;
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
  • 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  1. 在mybatis核心配置文件中,配置我们的日志!
<settings>
    <setting name="logImpl" value="LOG4J"/>
</settings>
  1. 导入log4j的包
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  1. log4j.properties–种类多了,一搜就有
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
  1. 测试

Log4j的简单使用

  • 在要使用Log4j 的类中,导入包 import org.apache.log4j.Logger;
  • 日志对象,参数为当前类的class
static Logger logger = Logger.getLogger(Test2.class);
日志级别
logger.info("info:进入了testLog4j");
logger.debug("debug:进入了testLog4j");
logger.error("error:进入了testLog4j");

2.分页

使用Limit分页

语法:.select * from user limit #{startIndex},#{pageSize} </select>

  • 1.接口
List<User> selectUserByLimit(Map<String,Integer> map);
  • 2.Mapper.xml
<select id="selectUserByLimit" parameterType="map" resultMap="UserMap">
    select * from user limit #{startIndex},#{pageSize}
</select>
  • 3.测试
import com.yang.mapper.RMapper;
import com.yang.pojo.User;
import com.yang.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;

import java.util.HashMap;
import java.util.List;


public class Test2 {
    static Logger logger = Logger.getLogger(Test2.class);
    public static void main(String[] args) {
        SqlSession session = MyBatisUtils.getSession();
        RMapper mapper = session.getMapper(RMapper.class);

//        User user = mapper.selectUserById(1);
//        System.out.println(user);
//        System.out.println("21324534231");
//        logger.error("1232142324312431");
//        logger.info("13124134231");
//        logger.debug("121342342312");
//        User user = mapper.selectUserById(1);
//        System.out.println(user);


        int currentPage = 2;
        int pageSize = 2;

        HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
        hashMap.put("startIndex",(currentPage-1)*pageSize);
        hashMap.put("pageSize",pageSize);
        List<User> users = mapper.selectUserByLimit(hashMap);
        for (User user : users) {
            logger.debug(user);
           System.out.println(user);

        }
    }
}

使用RowBounds分页

不再使用SQL实现分页

  • 1.接口
List<User> selectUserByLimit();
  • 2.mapper.xml
<select id="selectUserByLimit" parameterType="map" resultMap="UserMap">
    select * from user ;
</select>

<resultMap id="UserMap" type="User">
    <id column="id" property="id"/>

    <result column="name" property="name"/>
    <!--column列名,property属性名-->
    <result column="pwd" property="password"/>
</resultMap>
<select id="selectUserById" resultMap="UserMap">
    select id,name,pwd from user where id = #{id}
</select>
  • 3.测试
import com.yang.mapper.RMapper;
import com.yang.pojo.User;
import com.yang.utils.MyBatisUtils;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;

import java.util.HashMap;
import java.util.List;


public class Test2 {
    static Logger logger = Logger.getLogger(Test2.class);
    public static void main(String[] args) {
        SqlSession session = MyBatisUtils.getSession();
        
        int currentPage = 2;
        int pageSize = 2;

        RowBounds rowBounds = new RowBounds((currentPage-1)*pageSize,pageSize);
        List<User> users = session.selectList("com.yang.mapper.RMapper.selectUserByLimit", null, rowBounds);

        for (User user : users) {
            logger.debug(user);
         //  System.out.println(user);
        }
    }
}

3.使用注解开发(脱离mapper.xml开发)

  • 1.注解在接口上实现
package com.yang.mapper;
import com.yang.pojo.User;
import com.yang.utils.MybatisUtils;
import org.junit.Test;
import org.apache.ibatis.session.SqlSession;


public class UserMapperTest {

    @Test
    public void testGetUserList(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        for (User user : mapper.getUserList()) {
            System.out.println(user);
        }
    }
    @Test
    public void testGetUserID(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.getUsrByID(3));

    }
    @Test
    public void testGetUserByName(){
        SqlSession session = MybatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.getUserByName("gukai"));

    }

    @Test
    public void testAddUser(){
        SqlSession session = MybatisUtils.getSession(true);
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.addUser(new User(4, "蔡梓鑫", "123456")));

    }
    @Test
    public void testupdateUser(){
        SqlSession session = MybatisUtils.getSession(true);
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.updateUser(new User(4, "gukai", "123456")));

    }
    @Test
    public void testdeleteUser(){
        SqlSession session = MybatisUtils.getSession(true);
        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.deleteUser(2));
    }
}
  • 2.核心配置文件中绑定接口!
<mappers>
    <mapper class="com.yang.mapper.UserMapper"/>
    <!--<package name="com.yang.mapper"/>-->
    <!--<mapper resource="com/yang/mapper/UserMapper.xml"/>-->
</mappers>
  • 3.测试
package com.yang.mapper;

import com.yang.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {
    @Select("select * from user")
    List<User> getUserList();

    User getUser(int id);

    @Select("select * from user where name=#{name}")
    User getUserByName(String name);

    @Select("select * from user where id=#{id}")
    User getUsrByID(int id);

    @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{pwd})")
    int addUser(User user);

    @Update({"update user set name=#{name},pwd=#{pwd} where id=#{id}"})
    int updateUser(User user);

    @Delete("delete from user where id=#{id}")
    int deleteUser(int id);
}
  • 3.添加工具类 MybatisUtils,配置事务提交
package com.yang.utils;

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.InputStream;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //需要提交事务则增加参数,不需要提交事务则不增加参数
    public static SqlSession getSession(){
        return getSession(false);
    }
    //自动提交事务
    public static SqlSession getSession(boolean flag){
        return sqlSessionFactory.openSession(flag);
    }
}
发布了80 篇原创文章 · 获赞 7 · 访问量 4760

猜你喜欢

转载自blog.csdn.net/y18791050779/article/details/104978816