优化mybatis

Posted kfsrex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化mybatis相关的知识,希望对你有一定的参考价值。

在mybatis快速入门中有些地方可以优化:

1.可以把mybatis配置文件和操作文件开,方便管理,src源文件夹放操作文件,创一个resources源文件夹放mybatis配置文件。

2mybatis配置文件中的数据源配置可以单独放到一个db.properties(属性文件)。

db.properties文件(放在和mybatis配置文件同目录下):

#数据源(数据库)配置信息

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/mybatis

username=root

password=123

 

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>

       <environments default="development">

              <environment id="development">

                     <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>

       <!-- 配置映射文件UserMapper.xml -->

       <mappers>

              <mapper resource="com/zhiyou100/kfs/mapper/UsersMapper.xml"/>

       </mappers>

</configuration>

3.加入log4j日志文件(加入lo4j的jar包和配置一个log4j.properties)只能是这个名称:

log4j.properties,

log4j.rootLogger=DEBUG, Console

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

 

4.可以为java的类或包起别名,这样可以不用写全类名那么麻烦。

       <typeAliases>

              <!-- typeAlias:为类起别名,用_Users 调用-->

              <typeAlias type="com.zhiyou100.kfs.bean.Users" alias="_Users"/>

       </typeAliases>

 

       <typeAliases>

              <!-- package:为包起别名,包内的类可以直接用类名调用 -->

              <package name="com.zhiyou100.kfs"/>

       </typeAliases>

 

5.UserMapper.xml映射文件结合UserMapper.dao接口一起使用

UserMapper.xml配置文件:

<?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">

<!-- namespace是命名空间,和dao一起那么namespace要和dao全类名一致 -->

<mapper namespace="com.zhiyou100.kfs.dao.UserMapper">

       <!--

              id:相当于dao接口方法名称,

              parameterType:传入参数类型(输入类型),要写全类名,相当于dao里的参数列表类型

              resultType:传出参数类型(输出类型),要写全类名,相当于道理的返回值类型

        -->

        <!-- 通过id查询 -->

       <select id="selectById" parameterType="int"

              resultType="com.zhiyou100.kfs.bean.Users">

              select * from users where id=#id

       </select>

</mapper>

 

 

UserMapper.java接口:

package com.zhiyou100.kfs.dao;

 

import com.zhiyou100.kfs.bean.Users;

 

public interface UserMapper

       /**

        * 根据id查询用户

        * @param id

        * @return

        */

       /*

        * 方法名和UserMapper.xml里的id一致

        * 输入参数要和UserMapper.xml里的parameterType类型一致

        * 输出结果集要和UserMapper.xml里的resultType类型一致

        */

       public Users selectById(int id);

 

单元测试:

         @Test

         void test() throws Exception

                   //1.获取配置文件config.xml加入到io流中

                   InputStream inputStream = Resources.getResourceAsStream("config.xml");

                   //2.通过SqlSessionFatoryBuilder的builder创建sqlsessionfatory

                   SqlSessionFactory sqlSessionFatory = new SqlSessionFactoryBuilder().build(inputStream);

                   //3.通过sqlSessionFactory的openSession方法创建SqlSession

                   SqlSession sqlSession=sqlSessionFatory.openSession();

                   //4.通过sqlSession的getMapper传入dao全类名的方法创建UserMapper对象

                   UserMapper um=sqlSession.getMapper(com.zhiyou100.kfs.dao.UserMapper.class);

                   //5.调用UserMapper的selectById来使用通过id查询一个用户

                   Users user=um.selectById(1);

                   System.out.println(user);

                   //最后一个页是很重要的一个:关闭资源

                   sqlSession.close();

        

以上是关于优化mybatis的主要内容,如果未能解决你的问题,请参考以下文章

MybatisMyBatis 注解方式的基本 用法

MybatisMyBatis之缓存

MyBatisMyBatis的增删改查

Mybatismybatis登录实例

MybatisMybatis基础(中)

MybatisMybatis缓存