MyBatis框架的完整配置

MyBatis框架的配置及其使用

1. 创建项目

创建新的项目,需要在pom.xml中添加多项依赖,首先,应该添加mybatis依赖:

<!-- Mybatis框架 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.0</version>
</dependency>

MyBatis本身是可以独立使用的,但是,推荐结合Spring框架一起使用,所以,还需要添加mybatis-spring依赖:

<!-- MyBatis整合Spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.1</version>
</dependency>

整合后,框架的底层实现需要使用到spring-jdbc的依赖:

<!-- Spring JDBC依赖,必须与其它Spring依赖使用完全相同的版本 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.6.RELEASE</version>
</dependency>

注意:同一个项目中如果添加多个spring-为前缀的依赖,这些依赖必须使用相同的版本!

由于本次将使用MySQL数据库,所以,还需要添加MySQL数据库连接的mysql-connector-java依赖:

<!-- 连接MySQL数据库的依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
</dependency>

然后,还需要添加数据库连接池commons-dbcp的依赖:

<!-- 数据库连接池 -->
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>

最后,在编程时,为了及时检测代码,还应该添加单元测试junit的依赖:

<!-- 单元测试 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13</version>
    <scope>test</scope>
</dependency>

所以,当前项目中需要添加的完整的依赖的代码是:

<dependencies>
    <!-- SpringMVC -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.6.RELEASE</version>
    </dependency>
    
    <!-- Spring JDBC依赖,必须与其它Spring依赖使用完全相同的版本 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.6.RELEASE</version>
    </dependency>
    
    <!-- Mybatis框架 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.0</version>
    </dependency>
    
    <!-- MyBatis整合Spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.1</version>
    </dependency>
    
    <!-- Thymeleaf -->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>3.0.7.RELEASE</version>
    </dependency>

    <!-- Thymeleaf整合Spring -->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>3.0.7.RELEASE</version>
    </dependency>
    
    <!-- 连接MySQL数据库的依赖 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.15</version>
    </dependency>
    
    <!-- 数据库连接池 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>

    <!-- 单元测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
</dependencies>

2. 配置数据库连接

src/main/resources/下创建db.properties配置文件,并在该文件中配置连接数据库的信息:

url=jdbc:mysql://localhost:3306/User?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Chongqing
driver=com.mysql.cj.jdbc.Driver
username=root
password=root
initialSize=2
maxActive=10

接下来,就需要在spring-dao.xml中读取以上配置信息,以便于后续可以通过Spring获取这些配置的值!所以,添加配置:

<!-- 读取db.properties的配置 -->
<util:properties id="config" location="classpath:db.properties"/>

以上读取到的配置将应用于获取数据库连接的数据源,所以,还需要在spring-dao.xml中配置BasicDataSource

<!-- 配置数据源 -->
<bean class="org.apache.commons.dbcp.BasicDataSource">
    <!-- 以下注入属性的各节点中 -->
    <!-- name的值是BasicDataSource中的属性值 -->
    <!-- value的值是Spring表达式,config是以上读取配置文件的节点的id,右侧名称是db.properties中定义的属性名 -->
    <property name="url" value="#{config.url}"/>
    <property name="driverClassName" value="#{config.driver}"/>
    <property name="username" value="#{config.username}"/>
    <property name="password" value="#{config.password}"/>
    <property name="initialSize" value="#{config.initialSize}"/>
    <property name="maxActive" value="#{config.maxActive}"/>
</bean>

然后,执行单元测试:

public class Tests {
  
  BasicDataSource dataSource;
  
  @Test
  public void getConnection() throws SQLException {
    // 加载Spring配置文件,获得Spring容器
    ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring-dao.xml");
    // 从Spring容器中获取对象
    dataSource = ac.getBean("dataSource", BasicDataSource.class);
    // 测试
    System.out.println(dataSource.getConnection());
    // 释放资源
    ac.close();
  }

}

3. 编写抽象方法

MyBatis框架要求抽象方法都必须声明在接口中,所以,先创建cn.tedu.mybatis包,并在这个包中创建UserMapper接口:

package cn.tedu.mybatis;

public interface UserMapper {

}

为了便于处理数据,应该将用户信息相关的属性封装为一个类,所以,在cn.tedu.mybatis包下创建User类,并且根据t_user数据表的字段来设计User类中的属性:

public class User {

  private Integer id;
  private String username;
  private String password;
  private Integer age;
  private String phone;
  private String email;
 
  // 生成SET/GET方法,toString()方法
}

然后,需要在接口中添加“插入用户数据”的抽象方法,关于MyBatis框架使用的抽象方法的声明原则:

  • 如果即将执行的是INSERT、UPDATE、DELETE类型的操作,则使用Integer/int作为返回值类型,表示受影响的行数,当然,如果不关心这个返回值,也可以将返回值类型声明为void,但是,并不推荐;
  • 方法名称可以自定义;
  • 参数列表可按需设计。

所以,在UserMapper接口中添加“插入用户数据”的抽象方法:

package cn.tedu.mybatis;

public interface UserMapper {

  Integer addnew(User user);
  
}

完成后,还需要在spring-dao.xml中配置接口文件的位置,否则,MyBatis框架将不知道在哪里找接口及接口的抽象方法!(即使此前配置了组件扫描,也要做这项配置),所以,在spring-dao.xml中添加关于MapperScannerConfigurer的配置:

<!-- 配置MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 配置接口文件的位置 -->
    <property name="basePackage" value="cn.tedu.mybatis" />
</bean>

4. 配置抽象方法对应的SQL语句

这个SomeMapper.xml文件就是用于配置SQL语句的文件!该文件的顶部有相关声明:

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"      
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

注意:以上声明是必须存在的,且不可修改!

该文件的根节点必须是``节点,且必须配置namespace属性:

<!-- namespace属性:当前XML文件对应哪个接口,取值为接口的全名 -->
<mapper namespace="cn.tedu.mybatis.UserMapper">

</mapper>

然后,在的子级添加节点,以对应抽象方法,可以使用、``,应该根据将要执行的SQL语句的类型来选择子级节点!

本次要执行的是INSERT类型的操作,所以,选择``节点进行配置,该节点的id属性值就是对应的抽象方法的名称:

<!-- id属性:抽象方法的名称,不包含括号及参数列表 -->
<insert id="addnew">
</insert>

在以上节点的内部,就可以开始配置SQL语句,各值使用#{}格式的占位符,占位符中的名称就是抽象方法的参数User类型中的属性名:

<!-- id属性:抽象方法的名称,不包含括号及参数列表 -->
<insert id="addnew">
    INSERT INTO t_user (
      username, password, age, phone, email
    ) VALUES (
      #{username}, #{password}, #{age}, #{phone}, #{email}
    )
</insert>

然后,还需要配置SqlSessionFactoryBean类,以指定这些配置SQL语句的XML文件在哪里,及框架执行数据访问时通过哪个数据源连接到数据库,所以,在spring-dao.xml中添加:

<!-- 配置SqlSessionFactoryBean -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 配置XML文件在哪里 -->
    <property name="mapperLocations" value="classpath:mappers/*.xml" />
    <!-- 指定访问数据时使用的数据源 -->
    <property name="dataSource" ref="dataSource" />
</bean>

最后,在Tests测试类中编写并执行单元测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值