请简述 MyBatis 的操作大致步骤,试编程举例加以说明。
时间: 2024-03-07 13:48:58 浏览: 31
MyBatis 的操作大致步骤如下:
1. 定义数据源和连接池:在 MyBatis 中,我们需要先定义数据源和连接池。数据源用于连接数据库,连接池用于管理连接。
2. 定义 SQL 映射文件:SQL 映射文件定义了 SQL 语句和 Java 对象之间的映射关系。这里需要注意的是,MyBatis 支持动态 SQL 语句。
3. 配置 SQL 映射文件:在 MyBatis 的配置文件中,我们需要配置 SQL 映射文件的路径以及其他一些属性。
4. 创建 SqlSessionFactory:SqlSessionFactory 是 MyBatis 的核心,它是一个线程安全的对象,用于创建 SqlSession。
5. 创建 SqlSession:SqlSession 是 MyBatis 的一个接口,它提供了许多操作数据库的方法,包括插入、更新、查询和删除等。
6. 执行 SQL 语句:在 SqlSession 中,我们可以执行 SQL 语句,并将结果映射为 Java 对象。
下面是一个示例程序,演示了如何使用 MyBatis 进行数据库操作:
1. 定义 User 实体类:
```java
public class User {
private int id;
private String name;
private int age;
// 省略 getter 和 setter 方法
}
```
2. 定义 SQL 映射文件 user.xml:
```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.dao.UserDao">
<select id="getUserById" parameterType="int" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO user(name, age) VALUES (#{name}, #{age})
</insert>
</mapper>
```
3. 定义 UserDao 接口:
```java
public interface UserDao {
User getUserById(int id);
void addUser(User user);
}
```
4. 在 MyBatis 的配置文件中配置数据源和 SQL 映射文件的位置:
```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="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/dao/user.xml"/>
</mappers>
</configuration>
```
5. 创建 SqlSessionFactory:
```java
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
```
6. 创建 SqlSession:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
```
7. 执行 SQL 语句:
```java
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = userDao.getUserById(1);
System.out.println(user.getName());
User newUser = new User();
newUser.setName("Tom");
newUser.setAge(20);
userDao.addUser(newUser);
sqlSession.commit();
```
在上面的示例中,我们首先通过 SqlSessionFactory 创建了 SqlSession,然后通过 SqlSession 的 getMapper 方法获取了 UserDao 接口的实例,并调用了 getUserById 和 addUser 方法。最后,我们使用 sqlSession.commit() 提交了事务。