1. MyBatis框架简介
MyBatis框架可以简化数据库编程!
在使用MyBatis实现数据库编程时,只需要定义每个数据操作功能的抽象方法,并配置这个抽象方法对应的SQL语句即可!
当然,MyBatis框架还实现了数据库编程的其它细节,例如对查询结果的缓存等等。
2. 通过MyBatis实现插入用户数据
2.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.5.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.2. 配置数据库连接
在src/main/resources/下创建db.properties配置文件,并在该文件中配置连接数据库的信息:
url=jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
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();
}
}
2.3. 编写抽象方法
MyBatis框架要求抽象方法都必须声明在接口中,所以,先创建cn.demo.mybatis
包,并在这个包中创建UserMapper
接口:
package cn.demo.mybatis;
public interface UserMapper {
}
为了便于处理数据,应该将用户信息相关的属性封装为一个类,所以,在cn.tedu.mybatis
包下创建User
类,并且根据t_user
数据表的字段来设计User
类中的属性:
public class User {
private Integer id;
private String