- MyBatis
MyBatis是一种持久层框架。
传统的JDBC开发中,需要程序员编写大量的代码,例如创建与数据库的连接 > 获取Statement
/PreparedStatement对象 > 执行SQL语句 > 获取结果 > 处理结果 > 释放资源……这个流程相
对固定,代码量略多。
使用MyBatis可以极大程度的简化开发过程,程序员只需要定义需要执行的任务对应的抽象方
法,并指定该方法对应的SQL语句即可。 - 使用MyBatis
2.1. 案例目标
通过MyBatis实现对某张用户数据表的增、删、改、查。
2.2. 创建数据库与数据表
首先,创建数据库:
CREATE DATABASE tedu_ums;
然后,使用该数据库:
USE tedu_ums
接下来,创建数据表:
CREATE TABLE t_user (
id INT AUTO_INCREMENT COMMENT ‘用户id’,
username VARCHAR(20) UNIQUE NOT NULL COMMENT ‘用户名’,
password VARCHAR(20) NOT NULL COMMENT ‘密码’,
age INT COMMENT ‘年龄’,
phone VARCHAR(20) COMMENT ‘手机号码’,
email VARCHAR(50) COMMENT ‘电子邮箱’,
PRIMARY KEY(id)
) DEFAULT CHARSET=UTF8;
2.3. 创建项目
创建新的Maven Project,Group Id为cn.tedu.mybatis,Artifact Id为MyBatis,Pack
aging选择war。
创建完成后,依然需要:生成web.xml;添加Tomcat运行环境;复制此前项目中的依赖;复制
Spring的配置文件;复制web.xml中关于DispatcherServlet和CharacterEncodingFilter
的配置。
此次需要使用MyBatis框架,所以需要添加新的依赖:
org.mybatis
mybatis
3.5.1
由于即将把MyBatis和Spring框架整合起来使用,所以需要添加整合2个框架的依赖:
org.mybatis
mybatis-spring
2.0.1
其工作核心是依赖于JDBC的,还需要添加spring-jdbc依赖,该依赖的版本必须与当前项目使
用的spring-webmvc的版本完全一致:
org.springframework
spring-jdbc
4.3.9.RELEASE
本次使用的是MySQL数据库,还需要添加数据库连接的jar包:
mysql
mysql-connector-java
8.0.15
另外,还需要数据库连接池的依赖:
commons-dbcp
commons-dbcp
1.4
2.4. 连接数据库
首先,应该在src/main/resources下创建db.properties数据库连接的配置文件:
url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncodin
g=utf-8&serverTimezone=Asia/Shanghai
driver=com.mysql.cj.jdbc.Driver
username=root
password=root
initialSize=10
maxActive=50
如果不清楚driver属性的值,可以展开jar包中找到配置文件来查看:
然后,在Spring的配置文件中,使用util:properties节点读取以上配置文件:
<util:properties location=“classpath:db.properties” />
读取的配置需要注入到数据库连接池的BasicDataSource对象中,所以,还要在Spring的配
置文件中配置该类对应的节点,并注入属性的值,由于需要读取此前的<util:proper
ties>中的值,所以,还要为该节点添加id:
<util:properties id=“dbConfig”
location=“classpath:db.properties” />
相关文件的配置关系:
然后,创建单元测试类,并测试连接是否可用:
@Test
public void getConnection() throws SQLException {
ClassPathXmlApplicationContext ac
= new ClassPathXmlApplicationContext(“spring.xml”);
DataSource dataSource
= ac.getBean("dataSource", DataSource.class);
Connection conn =dataSource.getConnection();
System.out.println(conn);
ac.close();
}
2.5. 接口与抽象方法
创建cn.tedu.mybatis.mapper.UserMapper接口文件。
创建cn.tedu.mybatis.entity.User实体类。
首先,完成“增加”操作,则添加抽象方法:
// INSERT INTO t_user (username,password,age,phone,email) VALUES (?,?,?,?,?)
Integer addnew(User user);
MyBatis的接口文件不必在Spring组件扫描的范围之内,即框架本身是不知道有哪些接口文件、
这些文件在哪里的!所以,需要配置这些接口文件所在的位置!则在Spring的配置文件中配置
MapperScannerConfigurer并为必要的属性注入值:
然后,编辑SomeMapper.xml文件,配置抽象方法对应的SQL语句:
<!-- 根据将要执行的SQL语句选择节点 -->
<!-- id:抽象方法的名称 -->
<insert id="addnew">
INSERT INTO t_user (
username,password,
age,phone,
email
) VALUES (
#{username},#{password},
#{age},#{phone},
#{email}
)
</insert>
配置的关系图为:
至此,还需要让框架知道这些XML文件在哪里,并且,找到该文件后还要执行所配置的SQL语句
,就需要让框架知道如何连接数据库,则还需要配置SqlSessionFactoryBean:
UserMapper userMapper
= ac.getBean("userMapper", UserMapper.class);
User user = new User();
user.setUsername("FanCQ");
user.setPassword("123456");
Integer rows = userMapper.addnew(user);
System.out.println("rows=" + rows);
ac.close();