目录
目录
一、MyBatis 是什么
MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。它可以通过简单的 XML 或注解来配置和映射原生信息,将 Java 对象与 SQL 语句之间进行转换,从而实现对数据库的操作。
二、为什么使用 MyBatis
(一)灵活性高
- 可以自定义 SQL 语句,满足复杂的业务需求。对于一些特殊的查询或操作,开发人员可以根据具体情况编写特定的 SQL,而不是局限于通用的 ORM 框架生成的固定 SQL。
- 支持动态 SQL,可以根据不同的条件拼接不同的 SQL 语句。例如,可以根据传入的参数决定是否添加 WHERE 子句或者 ORDER BY 子句。
(二)性能优化
- MyBatis 对 SQL 的控制更加精细,可以进行针对性的性能优化。比如,可以通过合理设置数据库连接参数、使用存储过程等方式提高数据库操作的效率。
- 减少不必要的数据库访问。MyBatis 可以通过缓存机制减少对数据库的重复查询,提高系统的响应速度。
(三)易于维护
- 代码结构清晰。MyBatis 的配置文件和映射文件将数据库操作与业务逻辑分离,使得代码易于理解和维护。
- 方便进行数据库迁移。如果需要更换数据库,只需要修改 MyBatis 的配置文件和 SQL 语句,而不需要对大量的 Java 代码进行修改。
三、怎么用 MyBatis
(一)添加依赖
在项目的构建文件(如 Maven 的 pom.xml)中添加 MyBatis 的依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.x.x</version>
</dependency>
(二)配置 MyBatis
- 创建一个配置文件
mybatis-config.xml
,用于配置数据库连接信息和 MyBatis 的一些全局设置:
<?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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
- 创建映射文件(如
UserMapper.xml
),用于定义 SQL 语句和 Java 对象与数据库表的映射关系:
<?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="getAllUsers" resultType="com.example.entity.User">
SELECT * FROM users
</select>
<select id="getUserById" parameterType="long" resultType="com.example.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="long">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
(三)创建实体类和接口
- 创建实体类(如
User.java
),用于表示数据库中的表结构:
public class User {
private Long id;
private String name;
private String email;
// 构造函数、getter 和 setter 方法
//...
}
- 创建接口(如
UserMapper.java
),定义数据库操作方法:
import com.example.entity.User;
public interface UserMapper {
List<User> getAllUsers();
User getUserById(Long id);
int insertUser(User user);
int updateUser(User user);
int deleteUser(Long id);
}
(四)使用 MyBatis
在业务逻辑代码中,可以通过以下方式使用 MyBatis 进行数据库操作:
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;
import java.util.List;
public class Main {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 查询所有用户
List<User> users = userMapper.getAllUsers();
for (User user : users) {
System.out.println(user.getName() + " - " + user.getEmail());
}
// 查询单个用户
User user = userMapper.getUserById(1L);
if (user!= null) {
System.out.println(user.getName() + " - " + user.getEmail());
}
// 插入用户
User newUser = new User();
newUser.setName("New User");
newUser.setEmail("[email protected]");
int insertedId = userMapper.insertUser(newUser);
System.out.println("Inserted user with id: " + insertedId);
// 更新用户
User updateUser = userMapper.getUserById(2L);
if (updateUser!= null) {
updateUser.setName("Updated User");
userMapper.updateUser(updateUser);
}
// 删除用户
userMapper.deleteUser(3L);
}
}
}
通过以上步骤,就可以在 Java 项目中使用 MyBatis 进行数据库操作了。MyBatis 提供了强大的功能和灵活性,使得开发人员能够更加高效地进行数据库开发。
标签:数据库,详解,User,SQL,MyBatis,id,user From: https://blog.csdn.net/m0_57836225/article/details/142289870