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的员工全部信息,结果如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?