mybatis笔记
环境:
-
JDK1.8
-
Mysql 5.7
-
maven 3.6.1
-
idea
1、简介
1、1 什么是mybatis
-
MyBatis 是一款优秀的持久层框架,
-
它支持自定义 SQL、存储过程以及高级映射。
-
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
-
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
获得:
-
maven
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
-
github
-
中文文档
1、2 持久化
-
#数据持久化:将程序的的数据在持久状态和瞬时状态转化的过程
-
#内存:断电即失去
-
#数据库,io文件持久化;
-
持久化保证对象不会丢失
1、3 持久层
Dao层,Service层,Cotroller层
-
完成持久化工作的代码
-
层的界限十分明显
1、4 为什么
-
简化将数据存入数据库的过程
-
框架,自动化,方便上手
-
优点
-
简单灵活
-
sql和代码分离,提高可维护性
-
提供标签映射,支持对象与数据库的orm字段的映射关系
-
提供对象关系映射标签,支持对象关系组件维护
-
提供xml标签,支持编写动态sql
-
2、 快速入门
2、1 搭建环境
搭建数据库
CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE `use`(
id INT PRIMARY KEY NOT NULL ,
`name` VARCHAR(20) NOT NULL,
pwd VARCHAR(20) NOT NULL)ENGINE=INNODB CHARSET=utf8;
INSERT INTO `use` VALUE(1,'彭','ssssss'),
(2,'peng','44444'),
(3,'xiaoe','1s1s11s');
创建maven项目
导入依赖:mybatis,junit,mysql,
2、2 创建模块
-
在resource目录下编写mybatis核心配置文件(mybatis-config.xml)
-
编写mybatis工具类(factorybulid---》factory---》sqlsession)
// sqlSessionFactory --> sqlsession
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;//对象在try中,提升作用域;
// 第一步,使用静态代码块获取sqlsessionfactory对象
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);//文件转化成流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//第二步,既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
2、3 编写代码
-
实体类
-
在对应的pojo文件夹下建立对应数据库中数据的实体类
-
-
Dao/Mapper接口
public interface Mapper {
List<User> selectUser();// 注:接口中public 可省略;
}
-
Dao/ Mapper接口实现类
2、4 测试
junit 测试
// 注:在对应需测试的接口{}内 alt+insert 可在test下快速创建;
public class MapperTest extends TestCase {
注:可能遇到问题
-
BindingException——对应mapper.xml未在核心配置文件中注册
<mappers>
<mapper resource="com/peng/DaoMapper/Mapper.xml"/>
</mappers>
-
PersistenceException——对应的mapper.xml未在target对应的目录下生成,即资源导出失败;需在porm文件中添加build配置
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
-
CommunicationsException——连接异常;将配置文件中url 中的ssl ——》 false;
-
注:在mapper.xml中操作表,需用数据库名来进行限定、例:mybatis.use;
-
id中的方法名,返回值类型写法不对;
<!--注:sqlsession必须关闭;-->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具