为什么是非零基础呢?因为本笔记不包括一些概念介绍、历史介绍、还有持久化层技术的对比了,概念那部分对我们直接去开发、或者说想快速做一些项目的童鞋是没有很大必要了吧,我们要的就是实践出真知!!!
官方-用户使用手册
看了下截止到目前MyBatis的最新版本是3.5.16,而尚硅谷发布MyBatis3.5.7零基础入门教程视频是2022年2月,最新版本的压缩包里就没有MyBatis法宝了,这里只能奉上3.5.7的法宝了。
那就是:官方发布的用户使用手册
借花献佛:通过网盘分享的文件:mybatis-3.5.7.pdf
链接: https://pan.baidu.com/s/1uI2gupmRiKVsFWWqbPg42A?pwd=gq52 提取码: gq52



正式开练
教程开发环境
开发中很多问题可能都是环境配置不一致导致的,这里尚硅谷老师给出的教程环境列一下:
Idea2019、maven3.5.4、mysql5.7、jdk1.8
Maven – Maven Releases Historymaven与jdk的版本对照关系可参考:Maven – Maven Releases History
MyBatis初识
这里演示一下通过MyBatis实现增删改操作,这部分官方用户手册写得非常清楚了,一步一步怎么获取sqlSession、获取mapper接口实现类对象的。
准备实体类和数据库实体表
package com.coffeeship.pojo;
/**
* @description: 实体类
* @author: coffeeship
* @date: 2024/10/24 15:01
*/
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
private String email;
public User() {
}
public User(Integer id, String username, String password, Integer age, String sex, String email) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", email='" + email + '\'' +
'}';
}
}

导入依赖

<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
从XML配置文件获取SqlSessionFactory

对应测试类
SqlSession代表和数据库的一次会话,用完必须释放。
SqlSession和Connection一样都是非线程安全的,不能作为成员变量,否则会产生资源竞争。每次使用都应该去获取新的对象。
@Test
public void testMyBatisInsert() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取sqlSessionFactoryBuilder
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取SqlSession 默认不自动提交事务
// SqlSession sqlSession = sqlSessionFactory.openSession();
//设置事务自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//获取Mapper对象 底层技术:代理
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int result = mapper.insertUser();
//手动提交事务
// sqlSession.commit();
System.out.println(result);
}
核心配置文件
包括数据库连接环境(事务管理器、数据连接池)
transactionManager可选项:JDBC | MANAGED
dataSource可选项:POOLED | UNPOOLED | JNDI
关于核心配置文件中的标签介绍,更详细的可以参考尚硅谷在2018年发布的mybatis教程。
数据库连接池中的配置信息可通过properties文件注参;eg.


mapper

引入dtd约束:http://mybatis.org/dtd/mybatis-3-config.dtd
<?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="development">
<environment id="development">
<!--事务管理器,JDBC:最原始的方式,事务的操作回滚需要手动配置-->
<transactionManager type="JDBC"/>
<!--数据库连接池-->
<dataSource type="POOLED">
<prope

最低0.47元/天 解锁文章
338

被折叠的 条评论
为什么被折叠?



