Mybatis入门以及工程搭建
文章目录
- Mybatis入门以及工程搭建
- 前言
- 一、Mybatis是什么?
- 二、入门开发工程搭建步骤
- 1.New Project->Maven
- 2.如果Maven没有默认的设置,先要设置自己Maven的本地仓库。
- 3.按照官网,第一步要在pom.xml文件中添加mybatis的核心依赖(版本号可以用最新的)
- 4.跟数据库交互,还需要数据库(mysql)版本对应的连接驱动依赖,jdk1.8+mysql(5.6/5.7/8.0)这个环境直接用mysql8.0的驱动(更多版本对应关系可以去mysql的官网上找对应的版本发布文档)
- 5.新建mybatis全局配置文件mybatis.xml文件,并修改配置文件中的数据源信息
- 6.添加数据库表对应的POJO对象(相当于我们以前的实体类)
- 7.新建数据访问层的接口:POJOMapper
- 8.添加对应的POJOMapper.xml维护所有的sql
- 9.修改mybatis全局配置文件,修改mapper标签采用接口绑定的方式
- 10.一定要将mapper.xml和接口放在同一级目录中,只需要在resources新建接口同样结构的文件夹就可以。
- 11.编写测试用例
- 12.基于注解的测试用例
- 13.新增测试用例
- 总结
前言
Mybatis的介绍以及基础开发工程搭建步骤。
一、Mybatis是什么?
这个问题的解释没有比官网更权威的了,直接搜索mybatis,或者通过github搜索。
github地址:https://github.com/mybatis/mybatis-3
二、入门开发工程搭建步骤
根据官网进行工程的搭建。
工具:IDEA+Maven
1.New Project->Maven
2.如果Maven没有默认的设置,先要设置自己Maven的本地仓库。
File->Settings->Build,Execution,Depoyment->Build Tools->Maven
项目创建好了。
3.按照官网,第一步要在pom.xml文件中添加mybatis的核心依赖(版本号可以用最新的)
<!-- mybatis核心依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
4.跟数据库交互,还需要数据库(mysql)版本对应的连接驱动依赖,jdk1.8+mysql(5.6/5.7/8.0)这个环境直接用mysql8.0的驱动(更多版本对应关系可以去mysql的官网上找对应的版本发布文档)
<!-- mysql版本对应的数据库连接驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
5.新建mybatis全局配置文件mybatis.xml文件,并修改配置文件中的数据源信息
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
查看驱动的全限定名:
数据源配置完成。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="XXXXXXXXXXXX"/>
<property name="username" value="XXXXX"/>
<property name="password" value="XXXXXXX"/>
</dataSource>
</environment>
</environments>
</configuration>
6.添加数据库表对应的POJO对象(相当于我们以前的实体类)
package com.mybatisDemo.pojo;
public class EmpStaff {
private String staffId;
private String staffName;
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
@Override
public String toString() {
return "EmpStaff{" +
"staffId='" + staffId + '\'' +
", staffName='" + staffName + '\'' +
'}';
}
}
7.新建数据访问层的接口:POJOMapper
package com.mybatisDemo.mapper;
import com.mybatisDemo.pojo.EmpStaff;
public interface EmpStaffMapper {
/**添加mapper中对应操作的方法
* 1、方法名要和mapper中对应的操作的节点的id要一致
* 2、返回类型要和mapper中对应的操作的节点的resultTyoe一致
* 3、mapper中对应的操作的节点的参数要在方法的参数中声明
**/
EmpStaff selectStaff(String staffId);
}
8.添加对应的POJOMapper.xml维护所有的sql
mapper.xml中的namespace必须要和接口的全限定名一致
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatisDemo.mapper.EmpStaffMapper">
<select id="selectStaff" resultType="com.mybatisDemo.pojo.EmpStaff">
select * from emp_staff where staffId = #{staffId}
</select>
</mapper>
9.修改mybatis全局配置文件,修改mapper标签采用接口绑定的方式
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://rm-2zed50a7ka8y9ov9f4o.mysql.rds.aliyuncs.com:3306/mybatisdemo"/>
<property name="username" value="root"/>
<property name="password" value="Jian339661"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="EmpStaffMapper.xml"/>-->
<mapper class="com.mybatisDemo.mapper.EmpStaffMapper" ></mapper>
</mappers>
</configuration>
10.一定要将mapper.xml和接口放在同一级目录中,只需要在resources新建接口同样结构的文件夹就可以。
11.编写测试用例
@Test
public void test02() throws IOException {
//通过xml的配置文件 得到一个SqlSessionFactory对象实例
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
EmpStaffMapper mapper = session.getMapper(EmpStaffMapper.class);
EmpStaff empStaff = mapper.selectStaff("101");
System.out.println(empStaff);
}
}
12.基于注解的测试用例
修改mapper接口方法
package com.mybatisDemo.mapper;
import com.mybatisDemo.pojo.EmpStaff;
import org.apache.ibatis.annotations.Select;
public interface EmpStaffMapper {
@Select("select * from emp_staff where staffId = #{staffId}")
EmpStaff selectStaff(String staffId);
}
注意:注解可以和xml共用 但是不能同时存在方法对应的xml的id
13.新增测试用例
增删改涉及到了数据库更改,所以需要进行session.commit()最后的提交才会修改数据库数据,在后边与spring整合之后这些操作就省去了,后边再说。
@Test
public void test04() throws IOException {
//通过xml的配置文件 得到一个SqlSessionFactory对象实例
String resource = "mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
try {
EmpStaffMapper mapper = session.getMapper(EmpStaffMapper.class);
EmpStaff empStaff = new EmpStaff();
empStaff.setStaffId("102");
empStaff.setStaffName("小二");
int i = mapper.addStaff(empStaff);
session.commit();
System.out.println(empStaff);
}catch (Exception e){
session.rollback();
}finally {
session.close();
}
}
总结
到这里整个mybatis工程算是搭建完成了!其实这些在官网上都说的很详细,可以多去研究一下官网。
(ps:更多学习交流以及资料可以关注我得公众号:阿剑笔记)