MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 允许你将 SQL 语句映射到 Java 接口,通过简单的 XML 配置文件或注解来管理 SQL 语句。这使得 SQL 语句的管理变得更加简单,同时提供了高度的灵活性。
入门教程
1. 环境搭建
1.1 安装 JDK
首先,确保你的开发环境中安装了 JDK 1.8 或更高版本。
1.2 安装 Maven
Maven 是一个项目管理工具,可以帮助我们管理项目依赖。
sudo apt-get install maven
1.3 创建 Maven 项目
使用 Maven 创建一个简单的 Java 项目。
mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-example -DarchetypeArtifactId=maven-archetype-quickstart
2. 添加依赖
在 pom.xml 文件中添加 MyBatis 和数据库的依赖。
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
3. 配置 MyBatis
在 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/mybatis_example"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
4. 创建 Mapper 接口
在 src/main/java/com/example/mapper 目录下创建 UserMapper.java 接口。
package com.example.mapper;
import com.example.model.User;
public interface UserMapper {
User getUserById(int id);
}
5. 创建 Mapper XML
在 src/main/resources/com/example/mapper 目录下创建 UserMapper.xml 文件。
<?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">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
6. 使用 MyBatis
在主类中,加载 MyBatis 配置文件,创建 SqlSessionFactory,并使用它来创建 SqlSession。
package com.example;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Main {
public static void main(String[] args) {
try {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build("mybatis-config.xml");
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1);
System.out.println(user);
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
实践案例
以下是一个简单的用户管理系统的实践案例。
1. 创建数据库表
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
2. 创建实体类
在 src/main/java/com/example/model 目录下创建 User.java 文件。
package com.example.model;
public class User {
private int id;
private String username;
private String password;
// getters and setters
}
3. 创建 Mapper 接口
在 src/main/java/com/example/mapper 目录下创建 UserMapper.java 接口。
package com.example.mapper;
import com.example.model.User;
public interface UserMapper {
User getUserById(int id);
void addUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
4. 创建 Mapper XML
在 src/main/resources/com/example/mapper 目录下创建 UserMapper.xml 文件。
<?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">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="addUser" parameterType="com.example.model.User">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
</insert>
<update id="updateUser" parameterType="com.example.model.User">
UPDATE user SET username = #{username}, password = #{password} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
5. 使用 MyBatis
在主类中,加载 MyBatis 配置文件,创建 SqlSessionFactory,并使用它来创建 SqlSession。
package com.example;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Main {
public static void main(String[] args) {
try {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build("mybatis-config.xml");
SqlSession sqlSession = sqlSessionFactory.openSession();
// 添加用户
User user = new User();
user.setUsername("test");
user.setPassword("123456");
sqlSession.insert("com.example.mapper.UserMapper.addUser", user);
sqlSession.commit();
// 更新用户
user = new User();
user.setId(1);
user.setUsername("test1");
user.setPassword("123456");
sqlSession.update("com.example.mapper.UserMapper.updateUser", user);
sqlSession.commit();
// 删除用户
sqlSession.delete("com.example.mapper.UserMapper.deleteUser", 1);
sqlSession.commit();
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过以上步骤,你就可以入门 MyBatis 并进行简单的数据库操作了。在实际项目中,MyBatis 可以与 Spring 框架结合使用,实现更复杂的业务逻辑。
