Mybatis配置优化
Posted 3 ERROR(s)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
}
以上是关于Mybatis配置优化的主要内容,如果未能解决你的问题,请参考以下文章
转MyBatis学习总结——优化MyBatis配置文件中的配置