MysBatis入门教程
一、引言
MysBatis是一款优秀的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。本文将带您详细了解MysBatis的结构、优势、应用场景以及编写步骤,让0基础的你轻松上手!
二、MysBatis结构
-
API接口层:提供给外部调用的接口,如SqlSession接口。
-
数据处理层:负责SQL语句的执行以及结果集的处理,如Executor接口。
-
框架支撑层:提供基础支撑,如事务管理、连接池管理等。
-
引导层:负责配置文件的解析、SQL语句的加载和映射等。
三、MysBatis优势
-
简化JDBC操作:自动处理SQL语句的参数设置和结果集的获取,降低开发难度。
-
高度灵活:支持自定义SQL、存储过程和高级映射,满足各种复杂场景。
-
易于上手:相对于Hibernate等ORM框架,MysBatis更易于理解和掌握。
-
轻量级:无需引入过多的依赖,部署简单。
-
高性能:支持SQL语句的预编译和缓存,提高执行效率。
四、MysBatis应用场景
-
适用于复杂SQL查询的场景。
-
需要灵活操作数据库的场景。
-
对性能要求较高的场景。
-
适合中小型项目,特别是互联网项目。
五、MysBatis编写步骤
- 添加依赖
在项目的pom.xml文件中添加MysBatis依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
- 配置MysBatis
在项目的src/main/resources目录下创建mybatis-config.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
- 编写实体类
根据数据库表结构,创建对应的实体类,如User.java:
public class User {
private Integer id;
private String name;
private Integer age;
// 省略getter和setter方法
}
- 编写Mapper接口
创建Mapper接口,定义需要执行的SQL操作,如UserMapper.java:
public interface UserMapper {
int insert(User user);
int update(User user);
int delete(Integer id);
User selectById(Integer id);
List<User> selectAll();
}
- 编写Mapper映射文件
在src/main/resources目录下创建com/example/mapper/UserMapper.xml文件,编写SQL语句:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" parameterType="User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
<update id="update" parameterType="User">
UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}
</update>
<delete id="delete" parameterType="Integer">
DELETE FROM user WHERE id=#{id}
</delete>
<select id="selectById" parameterType="Integer" resultType="User">
SELECT * FROM user WHERE id=#{id}
</select>
<select id="selectAll" resultType="User">
SELECT * FROM user
</select>
</mapper>
- 编写测试类
创建测试类,执行Mapper接口中的方法,如UserMapperTest.java:
public class UserMapperTest
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 org.junit.BeforeClass;
import org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class UserMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init() {
try {
// 使用MyBatis提供的Resources工具类加载mybatis-config.xml文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 创建SqlSessionFactory对象
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testInsert() {
// 获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 获取Mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 创建User对象
User user = new User();
user.setName("张三");
user.setAge(28);
// 执行插入操作
int result = userMapper.insert(user);
// 提交事务
sqlSession.commit();
System.out.println("插入结果:" + result);
} finally {
// 关闭SqlSession
sqlSession.close();
}
}
// 这里可以继续添加其他测试方法,比如update、delete、selectById、selectAll等
}
六、总结
通过以上步骤,我们完成了MysBatis的基本使用。从添加依赖、配置MysBatis、编写实体类、Mapper接口和映射文件,到最后的测试类编写,每一步都是MysBatis操作数据库的关键。希望这篇博客能帮助您快速上手MysBatis,并在实际项目中灵活运用。
请注意,以上代码仅为示例,实际项目中的数据库连接信息、实体类属性、Mapper接口方法和SQL语句需要根据具体业务进行调整。此外,为了确保代码的整洁性和可维护性,建议在实际项目中使用日志框架记录操作日志,并处理可能出现的异常。
原文地址:https://blog.csdn.net/2301_81724645/article/details/144350856
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!