mybatis实现数据库增删改查详细讲解
时间: 2023-12-07 13:03:06 浏览: 96
mybatis实现增删改查
MyBatis 是一种持久层框架,它可以简化 Java 开发人员与数据库之间的交互。MyBatis 提供了一种将 SQL 语句与 Java 代码分离的方法,使得代码更加易于维护和升级。下面,我将详细介绍 MyBatis 如何实现数据库的增删改查操作。
首先,需要在项目中引入 MyBatis 的依赖。可以在 Maven 中添加以下依赖:
```xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
```
接下来,需要配置 MyBatis 的配置文件,这个配置文件包括了数据源、事务管理器、mapper 映射文件等信息。MyBatis 的配置文件通常命名为 `mybatis-config.xml`,示例配置如下:
```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.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
</mappers>
</configuration>
```
上述配置中,定义了数据源的信息,包括数据库驱动、URL、用户名和密码。同时,还定义了一个 `UserMapper.xml` 文件,该文件用于映射 SQL 语句。
然后,就可以创建一个 mapper 接口,使用注解或 XML 文件映射 SQL 语句,示例代码如下:
```java
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(int id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int addUser(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(int id);
}
```
上述代码定义了一个 `UserMapper` 接口,其中使用了 `@Select`、`@Insert`、`@Update` 和 `@Delete` 四个注解,分别对应查询、插入、更新和删除操作。注解中的 SQL 语句可以直接写在注解中,也可以使用 XML 文件来映射 SQL 语句。
最后,在代码中使用 `SqlSessionFactory` 和 `SqlSession` 对象来执行 SQL 语句,示例代码如下:
```java
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession session = sessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User();
user.setName("张三");
user.setAge(25);
userMapper.addUser(user);
session.commit();
User user2 = userMapper.getUserById(user.getId());
System.out.println(user2);
user.setName("李四");
user.setAge(30);
userMapper.updateUser(user);
session.commit();
userMapper.deleteUser(user.getId());
session.commit();
session.close();
```
上述代码中,首先创建了一个 `SqlSessionFactory` 对象,然后调用 `openSession()` 方法创建一个 `SqlSession` 对象。接着,通过 `session.getMapper(UserMapper.class)` 方法获取到一个 `UserMapper` 对象,然后就可以使用 `UserMapper` 接口中定义的方法执行 SQL 语句。
最后,需要调用 `session.commit()` 方法提交事务,并通过 `session.close()` 方法关闭 `SqlSession` 对象。
阅读全文