Mybatis配置优化


前言

一、起别名

方法一:类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

<typeAliases>
        <typeAlias type="entity.t_user" alias="User"/>
    </typeAliases>

方法二:当这样配置时,entity中的任何Bean 可以用在任何使用 entity 的地方。

<typeAliases>
        <package name="entity"/>
    </typeAliases>
  • 每一个在包 entity中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。

二、ResultMap结果集映射

当实体类中的属性和数据库中的字段名不一样时

数据库中的字段名: id  loginName  loginPwd   realName
实体类中的属性  : id   name        Pwd       rName

方法一:可以在 SELECT 语句中设置列别名(这是一个基本的 SQL 特性)来完成匹配。

<select id="selectUsers" resultType="User">
  select**加粗样式**
       id      as     id     ,
    loginName  as loginName  ,
    loginPwd   as loginPwd   ,
    realName   as  rName     
    from t_user
    where id = #{
    
    id}
   </select

方法二:使用resultmap:

  • resultMap 元素是 MyBatis 中最重要最强大的元素。
  • ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
<resultMap id="Usetest" type="test">
        <result column="id" property="id"/>
        <result column="loginName" property="Name"/>
        <result column="loginPwd" property="Pwd"/>
        <result column="realName" property="rName"/>
    </resultMap>
    <select id="getUserById" parameterType="java.lang.Integer" resultMap="Usetest">
       select * from t_user where id =#{
    
    id}
    </select>

其中column是 数据库中的字段property是 实体类中的属性。
resultMap id是我们自己定义的名称,type是我们的映射类型

三、日志

3.1日志工厂

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

在这里插入图片描述

  • SLF4J
  • LOG4J
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING (标准日志输出)
  • NO_LOGGING

Mybatis具体使用哪个日志输出由设置决定

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

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

注意:settings一定要放在引入配置文件和起别名中间

3.1LOG4J

1.LOG4J是什么?(来自百度百科)

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
  • 我们也可以控制每一条日志的输出格式
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程
  • 可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

2.导入LOG4J的包

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

3.配置log4j的配置文件

og4j.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/dao.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.console.file=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.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

4.配置log4j为日志的实现

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

四、分页

4.1Limit分页

1.接口

List<t_user>getlimit(Map<String ,Object> map);

2.Usermapper.xml

<select id="getlimit" resultType="t_user" parameterType="map">
        select * from t_user limit #{
    
    startIndex},#{
    
    Size};
    </select>

3.测试类

 public void getlimit()
    {
    
    
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        User_mapper mapper = sqlSession.getMapper(User_mapper.class);
        HashMap<String, Object> map = new HashMap<>();
        map.put("startIndex",2);
        map.put("Size",1);
        List<t_user> getlimit = mapper.getlimit(map);
        for (t_user user : getlimit) {
    
    
            System.out.println(user);
        }
        sqlSession.close();
    }

猜你喜欢

转载自blog.csdn.net/weixin_50302770/article/details/120817981