Mybatis框架的基本使用方法

2024-01-02

OS:Windows10  22H2

IDE:IDEA 2022.2.5

JDK version:19

Maven version:3.6.3

数据库:MySQL 8.1.0

 

项目结构:

一、使用Maven构建项目

 

<!-- mybatis的依赖 -->
<dependencies>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!--junit5测试 可以直接使用@Test进行程序调试-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>

 导入依赖后记得点击刷新

 

二、创建mapper接口以及POJO

 

 

public interface EmployeeMapper {
/**
* 根据id返回员工信息
* @param id 员工id
* @return 返回员工信息
*/
Employee queryById(Integer id);
/**
* 根据id删除员工信息
* @param id 员工id
* @return
*/
int deleteById(Integer id);
}

 

public class Employee {
private Integer empId;
private String empName;
private Double empSalary;
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Double getEmpSalary() {
return empSalary;
}
public void setEmpSalary(Double empSalary) {
this.empSalary = empSalary;
}
@Override
public String toString() {
return "Employee{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", empSalary=" + empSalary +
'}';
}
}

 

三、创建EmployeeMapper.xml和mybatis-config.xml文件

 创建位置如左图所示

1.EmployeeMapper接口中的方法需要有相应的SQL语句来实现其操作,EmployeeMapper.xml文件就是来实现相关的SQL语句的

例如要实现按id查找员工的全部信息、按id删除员工的全部信息(均在单表下进行操作)

 

<?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">
<!-- namespace = mapper接口类的全限定名,这样实现对应 -->
<mapper namespace="com.ssm.mapper.EmployeeMapper">
<!-- 声明标签写sql语句
CRUD creat(insert) read(select) update delete
每个标签对应一个接口的方法 对应接口中方法的实现
id="queryById" resultType="com.ssm.pojo.Employee" id 方法名 resultType 返回值类型
mapper接口 不能重载!!!! 因为mapper.xml只根据方法名来识别
-->
<select id="queryById" resultType="com.ssm.pojo.Employee">
<!-- #{empId}代表动态传入的参数,并且进行赋值!-->
select emp_id empId,emp_name empName, emp_salary empSalary from
t_emp where emp_id = #{id}
<!--
select emp_id, emp_name, emp_salary from
t_emp where emp_id = #{id} 这样写返回值为空
-->
</select>
<delete id="deleteById">
delete from t_emp where emp_id = #{id}
</delete>
</mapper>

2.mybatis-config.xml

mybatis框架配置文件: 数据库连接信息,性能配置,mapper.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>
<settings>
<!-- 开启mybatis的日志输出,选择使用system进行控制台输出-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- environments表示配置Mybatis的开发环境,可以配置多个环境,在众多具体环境中,使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 -->
<environments default="development">
<!-- environment表示配置Mybatis的一个具体的环境 -->
<environment id="development">
<!-- Mybatis的内置的事务管理器
MANAGED 不会自动开启事务 | JDBC 自动开启事务 需要自己提交事务
-->
<transactionManager type="JDBC"/>
<!-- 配置数据源
type = POOLED mybatis帮助我们维护一个连接池 | UNPOOLED 每次都要新建或释放连接
-->
<dataSource type="POOLED">
<!-- 建立数据库连接的具体信息 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis-example"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- Mapper注册:指定Mybatis映射文件的具体位置 -->
<!-- mapper标签:配置一个具体的Mapper映射文件 -->
<!-- resource属性:指定Mapper映射文件的实际存储位置,这里需要使用一个以类路径根目录为基准的相对路径 -->
<!-- 对Maven工程的目录结构来说,resources目录下的内容会直接放入类路径,所以这里我们可以以resources目录为基准 -->
<mapper resource="mappers/EmployeeMapper.xml"/>
</mappers>
</configuration>

四、进行测试

 

public class MybatisTest {
@Test
public void test01() throws IOException {
// 1.读取配置文件(mapper-config.xml)
InputStream ips = Resources.getResourceAsStream("mybatis-config.xml");
// 2.创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
// 3.根据sqlSessionFactory创建sqlSession(每次业务创建一个,通完就释放)
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4.获取接口的代理对象
// 内部拼接接口的全限定符,方法名 去查找sql语句标签 1.拼接 类的全限定符.方法名 -> 整合参数 -> 调用ibatis对应的方法
// JDK动态代理技术生成的mapper代理对象
// mybatis底层依然调用ibatis
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = mapper.queryById(1);
System.out.println("employee = " + employee);
// 5.提交事务(非DQL Data Query Language 数据查询语言)和释放资源
sqlSession.commit();
sqlSession.close();
}

五、测试结果

查询id值为1的员工全部信息,结果如下

posted @   LANE_AZUR  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示