MyBatis是java持久层的框架,我们知道java与数据库进行数据交换时需要使用jdbc,但是jdbc却存在有以下几个问题:
- 数据库连接的频繁创建、释放浪费资源进而影响系统性能。
- sql代码写在 java文件当中,如果在开发过程中我们改动某个sql,就需要去修改java代码,改完之后还需要重新编译。
- 对结果集的解析也是硬编码,sql变化会导致解析结果的代码也跟着变化,系统不易维护。
进而我们使用MyBatis框架来代替jdbc。
配置
我使用的idea版本是:2021.2.2
首先我们新建一个maven项目
然后选定项目目录
这是最初始的页面
接下来我们需要在pom.xml下引入坐标
以下是我引入的坐标及jar包
1. 引入MyBatis的3.4.5的版本的坐标
2. 引入MySQL驱动的jar包,5.1.6版本
3. 引入Junit单元测试的jar包
4. 引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)
<dependencies>
<!--mybatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
引入后我们需要点一下“m”使其生效。
我们知道MyBatis是为了和数据库传输数据,所以我们创建一个数据库和一张user表
代码如下,直接在Navicat下运行即可
create database mybatis_demo;
use mybatis_demo;
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'老王','2018-02-27
17:47:08','男','北京'),(2,'熊大','2018-03-02 15:09:37','女','上海'),(3,'熊二','2018-03-04
11:34:34','女','深圳'),(4,'光头强','2018-03-04 12:04:06','男','广州');
然后我们在源根目录下创建一个实体类User,数据库中的一个表对应java中的一个实体类
我们按照数据库表中字段为其设置一一对应的属性,然后生成对应的get和set方法
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
接下来我们需要创建一个userDao接口
然后我们需要在resources目录下,创建mapper文件夹。编写UserDao.xml的配置文件,导入约束文件。我们所写的sql语句都在UserDao.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">
<mapper namespace="">
</mapper>
创建UserDao.xml
我们在namespace里映射到UserDao接口
接下来需要创建主配置目录,我们在resources目录下创建SqlMapConfig.xml的配置文件(这里名称随意起)然后导入对应的约束,并编写主配置文件。
首次创建和刚刚创建UserDao.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>
<environments default="mysql">
<environment id="mysql">
<!--配置事务的类型,使用本地事务策略-->
<transactionManager type="JDBC"></transactionManager>
<!--是否使用连接池 POOLED表示使用链接池,UNPOOLED表示不使用连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserDao.xml"></mapper>
</mappers>
</configuration>
至此基本配置已经完成。
测试
下面我们来做一个简单的测试:
首先我们在UserDao.xml里写一条sql语句
我们来查询数据库里的所有信息
然后我们需要在UserDao接口中定义相关方法,和id对应
然后我们在测试目录下创建一个UserTest类并写下查询方法
查询成功