SSM框架之Mybatis使用笔记(三)

MyBatis配置

configuration(配置)
    properties(属性)
    settings(设置)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境配置)
        environment(环境变量)
            transactionManager(事务管理器)
            dataSource(数据源)
    databaseIdProvider(数据库厂商标识)
    mappers(映射器)

mybatis-config.xml

<?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" />
    <!--
    也可以在这里设置,但外部优先级更高,会覆盖这里的值
        <properties resource="">
            <property name="" value=""/>
        </properties>
     -->

    <!--日志工厂实现-->
    <settings>
        <!-- 标准的日志工厂实现 -->
        <!-- <setting name="logImpl" value="STDOUT_LOGGING"/> -->
        <!-- 【企业常用】 LOG4J的日志工厂实现 具有详细的日志,可以控制输出格式,可以控制定义每条日志信息的级别,可以通过配置文件来灵活配置-->
        <setting name="logImpl" value="LOG4J"/><!-- 使用前需要导入依赖 -->
    </settings>

    <!--给实体类起别名-->
    <typeAliases>
        <!--
        实体类少的时候可以用这个,多的时候用package
            <typeAlias type="com.feng.pojo.User" alias="User"/>
        -->
        <package name="com.feng.pojo"/>
    </typeAliases>

    <!--
     注意一些关键点:
        默认使用的环境 ID(比如:default="development") 务必保证默认的环境 ID 要匹配其中一个环境 ID。
        每个 environment 元素定义的环境 ID(比如:id="development")。
        事务管理器的配置(比如:type="JDBC")。
        数据源的配置(比如:type="POOLED")。
    -->
    <!-- 环境配置 -->
    <environments default="external">
        <!-- 开发环境 -->
        <environment id="development">
            <!--
            事务管理器(transactionManager):
                在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]")
                    JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施
                    MANAGED – 这个配置几乎没做什么,默认情况下它会关闭连接。
                        然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。
                <transactionManager type="MANAGED">
                  <property name="closeConnection" value="false"/>
                </transactionManager>
            -->
            <transactionManager type="JDBC"/>
            <!--
            数据源(dataSource):
                dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
                有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):
                【不常用】UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接,因此会很慢.
                 【流行】POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。
                【不常用】JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用.
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=UTC&amp;autoReconnect=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

        <!-- 测试环境 -->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=UTC&amp;autoReconnect=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

        <!-- 使用外部配置文件 -->
        <environment id="external">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>

    </environments>

    <mappers>
        <mapper resource="com/feng/dao/UserMapper.xml"/>
    </mappers>
</configuration>

LOG4J日志实现(取代sout、Debug进行查错)

1、导入LOG4J依赖

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

2、创建log4j.properties配置文件

#将等级为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/feng.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

3、配置LOG4J为日志实现

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

4、LOG4J的使用

public class UserMapperTest {

    static Logger logger = Logger.getLogger(UserMapperTest.class);
    @Test
    public void testLog4j(){
        logger.info("info:进入了testlog4j");
        logger.debug("debug:进入了testlog4j");
        logger.error("error:进入了testlog4j");
    }

    @Test
    public void getUserListTest(){
        logger.info("info:进入getUserListTest");
        // 第一步:获得sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        // 第二步:执行sql
        /*
        * 1. 从sqlSession里执行sql,如何获取sql?
        * 2. 通过getMapper获取UserMapper接口,使用面向接口编程
        *   因为xml是UserMapper具体实现,因此只需要获取接口即可。
        * 3. 获取接口userMapper后,即可通过接口调用接口提供方法。
        * */

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }
        // 第三步:关闭sqlSession
        sqlSession.close();
    }
}

5、LOG4J使用效果

在这里插入图片描述

分页

三步走:接口定义方法,实现方法,测试

public interface UserMapper {
    //分页
    List<User> getUserByLimit(Map<String,Integer> map);
}

<?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="com.feng.dao.UserMapper">
    <select id="getUserByLimit" parameterType="map" resultType="User">
        select *
        from mybatis.user
        limit #{startIndex},#{pageSize};
    </select>
<mapper>    

public class UserMapperTest {

    static Logger logger = Logger.getLogger(UserMapperTest.class);
    @Test
    public void testLog4j(){
        logger.info("info:进入了testlog4j");
        logger.debug("debug:进入了testlog4j");
        logger.error("error:进入了testlog4j");
    }

    @Test
    public void getUserByLimit(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String, Integer> map = new HashMap<>();
        map.put("startIndex",1);
        map.put("pageSize",4);
        List<User> userList = mapper.getUserByLimit(map);
        for (User user : userList) {
            logger.info(user);
        }

        sqlSession.close();
    }
}

分页效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值