MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
以下是一份详细的教程,帮助新手从搭建环境到实现CRUD(创建(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))操作。
1. 搭建开发环境
1.1 安装Java开发环境
首先,确保你的计算机上安装了Java Development Kit(JDK)。你可以从Oracle官网下载适合你操作系统的JDK版本。
安装完成后,配置环境变量,确保在命令行中可以运行java -version和javac -version命令。
1.2 安装IDE
推荐使用IntelliJ IDEA或Eclipse作为Java开发环境。以下以IntelliJ IDEA为例:
- 访问JetBrains官网下载并安装IntelliJ IDEA。
- 在安装过程中,选择“Community”版即可。
- 安装完成后,运行IDEA,创建新项目。
1.3 添加MyBatis依赖
在项目中创建pom.xml文件,并添加以下依赖:
<dependencies>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MySQL驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
2. 配置MyBatis
2.1 创建SqlSessionFactory
在src/main/resources目录下创建mybatis-config.xml文件,配置SqlSessionFactory:
<?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/your_database"/>
<property name="username" value="your_username"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/your/package/mapper/YourMapper.xml"/>
</mappers>
</configuration>
2.2 创建Mapper接口
在src/main/java/com/your/package/mapper目录下创建YourMapper.java接口:
package com.your.package.mapper;
import com.your.package.entity.YourEntity;
public interface YourMapper {
int insert(YourEntity record);
int deleteById(Long id);
int update(YourEntity record);
YourEntity selectById(Long id);
}
2.3 创建Mapper XML
在src/main/resources/com/your/package/mapper目录下创建YourMapper.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.your.package.mapper.YourMapper">
<insert id="insert" parameterType="YourEntity">
INSERT INTO your_table (column1, column2) VALUES (#{column1}, #{column2})
</insert>
<delete id="deleteById" parameterType="Long">
DELETE FROM your_table WHERE id = #{id}
</delete>
<update id="update" parameterType="YourEntity">
UPDATE your_table
SET column1 = #{column1}, column2 = #{column2}
WHERE id = #{id}
</update>
<select id="selectById" parameterType="Long" resultType="YourEntity">
SELECT * FROM your_table WHERE id = #{id}
</select>
</mapper>
3. 实现CRUD操作
3.1 创建实体类
在src/main/java/com/your/package/entity目录下创建YourEntity.java实体类:
package com.your.package.entity;
public class YourEntity {
private Long id;
private String column1;
private String column2;
// 省略getter和setter方法
}
3.2 创建Mapper接口实现类
在src/main/java/com/your/package/mapper目录下创建YourMapperImpl.java接口实现类:
package com.your.package.mapper;
import com.your.package.entity.YourEntity;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class YourMapperImpl implements YourMapper {
private final SqlSessionFactory sqlSessionFactory;
public YourMapperImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public int insert(YourEntity record) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.insert("com.your.package.mapper.YourMapper.insert", record);
}
}
@Override
public int deleteById(Long id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.delete("com.your.package.mapper.YourMapper.deleteById", id);
}
}
@Override
public int update(YourEntity record) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.update("com.your.package.mapper.YourMapper.update", record);
}
}
@Override
public YourEntity selectById(Long id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectOne("com.your.package.mapper.YourMapper.selectById", id);
}
}
}
3.3 使用Mapper接口实现CRUD操作
在需要使用MyBatis进行数据库操作的类中,注入YourMapper接口:
package com.your.package.service;
import com.your.package.entity.YourEntity;
import com.your.package.mapper.YourMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class YourService {
@Autowired
private YourMapper yourMapper;
public void create(YourEntity entity) {
yourMapper.insert(entity);
}
public void delete(Long id) {
yourMapper.deleteById(id);
}
public void update(YourEntity entity) {
yourMapper.update(entity);
}
public YourEntity get(Long id) {
return yourMapper.selectById(id);
}
}
通过以上步骤,你已经成功搭建了MyBatis开发环境,并实现了CRUD操作。希望这份教程对你有所帮助!
