Maven下的Mybatis基本配置和使用

时间:2021-09-21 05:13:41

Mybatis单独的配置比较简单:

1. 在maven中引入相应的依赖
首先在pom中引入mybatis的包和对应数据库的包,例如:

<!-- 数据库连接部分,以mysql为例-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>xx.xx</version>
</dependency>

<!-- Mybatis部分-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>xx.xx</version>
</dependency>

2. 配置Mybatis配置文件
在resource目录下建立mybatis-config.xml文件(文件名随意啦),这是个是mybatis的主配置文件。里面主要配置property,typeAlias,typeHandler,environment,mapper等。

property配置所依赖的文件,例如:

<properties resource='jdbc.properties'/> 

jdbc.properties文件的内容是:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xyb_test?useUnicode=true&characterEncoding=utf8
jdbc.username=xyb
jdbc.password=loveCharlotte

之后使用property元素引用jdbc.properties文件中的属性值,例如:

<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>

typeAlias定义mybatis操作的类的简化名称,例如:

<typeAlias type='com.xxx.xxx.pojo.Account' alias='Account'></typeAlias>

在Mybatis主配置文件中定义的假名在mybatis使用的全局生效。

typeHandler用来处理java中的类型和数据库中类型转换,Mybatis默认定义了java中所有基本数据类型的类型转换函数和外加的两个处理枚举类型的处理函数,例如:

<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="com.xxx.xxx.Status.Status"/> 

也可以自定义类型处理函数,然后配置。

environment定义数据库连接,事务管理的东西,可以利用之前定义的属性文件中的变量值,例如:

<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>

mapper指定 SQL语句编写 的位置,例如指定某个.xml文件:

<mapper resource="xxx-mapper.xml" />

3. 定义xxx-mapper.xml文件
xxx-mapper.xml文件中最基本的有两个部分,

  • 这个mapper文件关联到哪个java接口
  • 这个mapper文件执行的SQL语句是怎么定义
    第一个问题通过mapper的namespace元素定义,例如:
<mapper namespace="com.xxx.xxx.mappers.AccountMapper">

第二个问题可以参考官方文档,一个简单的mapper文件如下:

<-- mapper.xml中-->
<mapper namespace="com.xxx.xxx.mappers.AccountMapper">
<select id="selectAllAccount" resultType="Account">
SELECT * FROM Accounts
</select>

4. 定义java接口

//接口中
package com.xxx.xxx.mappers;
public interface AccountMapper {
List<Account> selectAllAccount();
}

5. 使用Mybatis

        //1.  用配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().
build(Resources.getResourceAsStream("mybatis-config.xml"));

//2. 利用SqlSessionFactory打开一个和数据库的SqlSession
SqlSession session = sqlSessionFactory.openSession();

//3. 利用这个SqlSession获取要使用的mapper接口
AccountMapper accountMapper = session.getMapper(AccountMapper.class);

//4. 使用mapper接口和数据库交互,运行mapper.xml文件中的SQL语句
List<Account> allAccountsList = accountMapper.selectAllAccount();

//5. SqlSession提交SQL到数据库并关闭SqlSession
session.commit();
session.close();

Mybatis中的工具类Resources可以用来读取指定配置文件,并且能自动去resource目录下寻找。Resources的getResourceAsXXX()方法能读文件返回成XXX类型。

Mybatis配置部分参考Mybatis配置文档