目录
工作原理图
使用 MyBatis 操作数据库通常需要以下几个步骤:
1、配置数据库连接信息:
2、定义数据表对应的实体类:
3、编写 SQL 映射文件:
4、配置 MyBatis 映射文件:
5、创建 MyBatis 的 SqlSessionFactory:
6、创建 SqlSession:
7、执行 SQL 查询:
8、处理查询结果:
9、提交事务或回滚:
10、释放资源:
工作原理图
使用 MyBatis 操作数据库通常需要以下几个步骤:
1、配置数据库连接信息:
在 MyBatis 的配置文件中,需要指定数据库的连接信息,例如数据库类型、URL、用户名和密码等。
<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/mydatabase" /><property name="username" value="root" /><property name="password" value="password" /></dataSource></environment></environments>
</configuration>
2、定义数据表对应的实体类:
创建 Java 类,用于映射数据库中的表结构。该实体类的字段应该与数据库表中的列相对应,并提供相应的 getter 和 setter 方法。
public class User {private int id;private String name;private int age;// getter 和 setter 方法// ...
}
3、编写 SQL 映射文件:
创建一个 XML 文件,用于存放 SQL 语句。在该文件中,可以定义查询、插入、更新和删除等操作的 SQL 语句,以及参数的映射关系。
<mapper namespace="com.example.mapper.UserMapper"><select id="getUserById" resultType="com.example.model.User">SELECT * FROM User WHERE id = #{id}</select>
</mapper>
4、配置 MyBatis 映射文件:
在 MyBatis 的配置文件中,需要引入之前编写的 SQL 映射文件,并且配置相应的命名空间和别名。
<configuration><mappers><mapper resource="com/example/mapper/UserMapper.xml" /></mappers>
</configuration>
5、创建 MyBatis 的 SqlSessionFactory:
在 Java 代码中,使用 MyBatis 提供的 SqlSessionFactoryBuilder 来创建 SqlSessionFactory,它是 MyBatis 的核心类,负责创建 SqlSession 的实例。
6、创建 SqlSession:
使用 SqlSessionFactory 创建一个 SqlSession 实例,通过 SqlSession 可以执行具体的数据库操作,如查询、插入、更新和删除等。
SqlSession sqlSession = sqlSessionFactory.openSession();
7、执行 SQL 查询:
在 SqlSession 中调用相应的方法执行 SQL 查询操作,如 selectOne()
、selectList()
等,可以传递参数并获取返回的结果。
User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1);
8、处理查询结果:
获取 SQL 查询的返回结果,并通过之前定义的实体类进行封装,从而将查询结果转化为 Java 对象。
9、提交事务或回滚:
如果在数据库操作中使用了事务管理,需要在适当的时候提交事务或回滚事务,以确保数据的一致性。
sqlSession.commit(); // 提交事务
// 或
sqlSession.rollback(); // 回滚事务
10、释放资源:
使用完 SqlSession 后,需要手动关闭它以释放数据库连接和相应的资源,可以通过 close()
方法来关闭。
sqlSession.close();