Mybatis是一款流行、轻量级的Java持久化框架,它的使用方式简单、灵活,适用于各种复杂的数据访问场景。下面是Mybatis的详细使用教程:
1. 环境搭建
要使用Mybatis,首先需要搭建运行环境,并添加相应的依赖项。假设我们使用Maven管理项目依赖,可以在 pom.xml
文件中添加如下依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
另外,需要编写Mybatis的配置文件 mybatis-config.xml
,该文件用于配置Mybatis的核心组件,例如数据源、映射文件等。以下是一个简单示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
以上 mybatis-config.xml
配置文件中,我们指定了使用 POOLED
数据源类型、JDBC 事务管理器,并引入了一个映射文件 UserMapper.xml
。
2. 数据库访问
Mybatis 提供了多种数据访问方式,可以基于 XML 配置 SQL 语句、注解处理器、甚至直接使用 Mybatis 提供的 API 接口等方式进行操作。下面我们以基于 XML 配置 SQL 语句的方式为例,介绍如何进行数据库访问。
2.1 映射文件配置
在 Mybatis 中,我们通过映射文件将 Java 对象和数据库表进行映射。以下是一个简单的映射文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectAllUsers" resultType="User">
SELECT * FROM users
</select>
</mapper>
以上映射文件中,我们定义了一个名为 selectAllUsers
的查询语句,并将查询结果映射为 User
类型的对象。
2.2 数据访问接口定义
在使用 Mybatis 进行数据库访问时,我们通常需要定义一个 Java 接口,用于描述数据访问的行为。该接口中的方法名称和参数描述应与映射文件中定义的 SQL 语句保持一致。以下是一个简单的接口示例:
package com.example.mapper;
import com.example.model.User;
import java.util.List;
public interface UserMapper {
List<User> selectAllUsers();
}
以上接口定义了一个 selectAllUsers
方法,用于查询所有用户信息。
2.3 数据访问实现
定义完数据访问接口后,我们需要实现接口中的方法。通常情况下,我们可以使用 Mybatis 提供的 SqlSessionFactory
对象获取一个 SqlSession
实例,并通过该实例执行数据访问操作。以下是一个简单的实现示例:
package com.example.mapper;
import com.example.model.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class UserMapperImpl implements UserMapper {
private final SqlSessionFactory sqlSessionFactory;
public UserMapperImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public List<User> selectAllUsers() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectList("com.example.mapper.UserMapper.selectAllUsers");
}
}
}
以上实现中,我们使用 SqlSession
对象执行了 selectAllUsers
查询操作,并返回查询结果。
3. 使用示例
为了演示 Mybatis 的使用,我们假设有一个名为 User
的 POJO 类用于映射关系型数据库中的 users
表。以下是一个简单的示例代码:
package com.example.model;
public class User {
private int id;
private String name;
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
// getter, setter 等方法省略
}
接下来,我们可以通过以下代码进行数据访问:
package com.example;
import com.example.mapper.UserMapper;
import com.example.mapper.UserMapperImpl;
import com.example.model.User;
import org.apache.ibatis.io.Resources;
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 App {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
UserMapper userMapper = new UserMapperImpl(sqlSessionFactory);
List<User> users = userMapper.selectAllUsers();
for (User user : users) {
System.out.println(String.format("id=%d, name=%s", user.getId(), user.getName()));
}
}
}
以上代码中,我们使用 SqlSessionFactory
对象创建了一个 SqlSession
实例,通过该实例可以调用 UserMapperImpl
实现类中定义的查询方法,最后输出查询结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis的详细使用教程 - Python技术站