什么是myBatis
1.MyBatis 是一种开源的持久层框架,它提供了数据库操作的简化和灵活性。它的全名是 MyBatis SQL Mapper(之前称为 iBATIS),是一个用于将 Java 对象与关系数据库之间进行映射的框架。
MyBatis 的主要目标是使开发人员能够更轻松地编写和执行数据库操作,同时提供了较高的灵活性和可定制性。相比于传统的 JDBC 编程,MyBatis 大大简化了数据库访问代码的编写,并且不需要手动编写大量的 SQL 语句。
2.MyBatis 的核心特点包括:
- SQL 映射配置:通过 XML 或注解配置 SQL 映射关系,将 SQL 语句与 Java 方法进行绑定,实现数据库操作的自动化。
- 灵活的 SQL 语句控制:MyBatis 支持使用动态 SQL、条件判断、循环等,可以根据不同的情况生成不同的 SQL 语句,提高灵活性和可复用性。
- 参数绑定和结果映射:MyBatis 提供了参数绑定和结果集映射的功能,可以将查询结果直接映射为 Java 对象或集合。
- 缓存支持:MyBatis 内置了一级缓存和二级缓存的支持,可以提高查询的性能和效率。
- 事务管理:MyBatis 支持对事务的管理,可通过配置进行事务的提交或回滚。
- 插件扩展:MyBatis 提供了插件机制,可以自定义和扩展框架的功能。
3.如何使用myBatis部署项目
1.下载jar包文件,如果使用的是maven的话,直接导入以下依赖就可以了。
jar包下载:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
2.编写myBatis的配置文件
创建mybatis-config.xml文件在resources目录下
mybatis-config.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>
<!-- 引入包含数据库连接参数的 database.properties -->
<properties resource="database.properties">
<!-- 1.设置MyBatis 框架的运行时行为 -->
<!-- 配置 Logback 配置文件的路径 -->
<property name="logback.configurationFile" value="classpath:logback.xml"/>
</properties>
<!-- 配置环境映射数据 -->
<settings>
<setting name="autoMappingBehavior" value="FULL"/>
</settings>
<typeAliases>
<!-- 通过映射文件 简化指定文件 -->
<typeAlias alias="sysuer" type="pojo.T_sysuser"></typeAlias>
<!-- 通过映射文件 简化整个包的路径 -->
<package name="pojo"/>
</typeAliases>
<!-- 其他配置项 -->
<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>
<!-- 如果映射文件较多可以直接导入包路径 -->
<!-- 比如 <package name="mapper"/> -->
<!--比如<mapper resource="mapper/administratorMapper.xml"/>-->
</mappers>
</configuration>
在上面的代码中有很多大家需要注意的地方就是:
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
-
开发环境(Development Environment):用于开发和调试代码的环境。
- Debugging(调试):提供了调试工具和功能,如断点、变量监视等。
- Logging(日志记录):允许将运行时信息记录到日志文件中,以便查找问题和分析。
- Auto-reloading(自动重新加载):在代码修改后自动重新加载应用程序,以加快开发过程。
-
测试环境(Testing Environment):用于执行单元测试、集成测试和系统测试的环境。
- Test Data(测试数据):包含用于测试的数据集合。
- Test Framework(测试框架):提供了测试工具和断言库,用于编写和执行测试用例。
- Test Configuration(测试配置):配置文件或设置,用于控制测试环境和行为。
-
生产环境(Production Environment):用于部署和运行实际生产系统的环境。
- Scalability(可扩展性):能够处理高负载和大规模用户访问。
- Security(安全性):保护数据和系统免受未经授权的访问和攻击。
- Performance Optimization(性能优化):通过调整配置和优化代码,提高系统的响应速度和资源利用率。
-
其他环境属性:
- Configuration(配置):每个环境都有自己的配置文件,包括数据库连接、密钥、API地址等。
- Error Handling(错误处理):针对不同环境设置适当的错误处理机制,如显示用户友好的错误信息或记录详细的错误日志。
- Deployment(部署):每个环境有自己的部署策略和流程,例如使用不同的工具、云平台等。
在mybatis-config.xml中我们可以看到我们添加了database.properties,
其中我们就添加了数据库连接的信息
在创建我们的.xml
4.编写我们的持久层
创建我们的mapper接口
在mybatis-config.xml中我们可以导入映射文件就是我们已经写好的.xml文件
5.写我们的sql语句
写方法
MyBatis的SQL语句包括以下几种类型:
-
查询语句(SELECT):用于从数据库中检索数据。
- 基本查询语句:SELECT * FROM table_name;
- 条件查询语句:SELECT * FROM table_name WHERE condition;
- 聚合函数查询语句:SELECT COUNT(column) FROM table_name;
-
插入语句(INSERT):用于向数据库中插入新的数据。
- 基本插入语句:INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- 批量插入语句:INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
-
更新语句(UPDATE):用于修改数据库中已有数据。
- 基本更新语句:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
- 批量更新语句:UPDATE table_name SET column = value WHERE condition;
-
删除语句(DELETE):用于从数据库中删除数据。
- 基本删除语句:DELETE FROM table_name WHERE condition;
- 删除所有数据语句:DELETE FROM table_name;
-
动态SQL:MyBatis提供了强大的动态SQL功能,可以根据条件拼接不同的SQL语句。
- IF语句:根据条件判断是否包含某段SQL语句;
- CHOOSE-WHEN-OTHERWISE语句:类似于Java中的switch语句,根据不同条件选择执行不同的SQL语句;
- FOREACH语句:循环遍历集合或数组,执行重复的SQL语句。
配置封装类,封装mybatis执行代码
mybatisUtil代码:
package util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MyBatisUtil {
private static String url="mybatis-config.xml";
private static InputStream is=null;
private static SqlSessionFactory sqlSession=null;
static{
try {
// 1.加载mybatis核心配置文件
is= Resources.getResourceAsStream(url);
// 2创建SqlSessionFactory对象通过SqlSessionBuild来处理,Build
sqlSession=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession openSqlSession(){
return sqlSession.openSession(true);
}
public static void closeSqlSession(SqlSession session){
session.close();
}
}
创建测试类测试方法: