Mybatis注解方式操作Oracle数据库详解
1. 前言
Mybatis 是一种优秀的持久化框架,可以使数据访问层代码变得简洁而有扩展性。在Mybatis中,有两种配置方式(xml映射和注解映射),其中注解配置方式简单,直观,快速,特别适合针对简单的语句进行编程。
本文主要介绍在Oracle数据库中使用 Mybatis 注解方式的详细步骤。
2. 添加依赖
在 pom.xml 文件中添加以下依赖:
<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--Oracle数据库-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.7.0.0</version>
</dependency>
3. 创建数据库连接配置文件
在 src/main/resources 目录下创建 mybatis-config.xml 配置文件,用于配置 Mybatis 的一些全局属性以及数据库连接信息。示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</dataSource>
</environment>
</environments>
</configuration>
注:其中的数据库连接信息需要替换成自己的实际配置信息。
4. 创建实体类
创建与数据库表对应的实体类,要求实体类中属性的名称与数据库中字段名保持一致。示例:
public class User {
private Long id;
private String name;
private Integer age;
// getter 和 setter ...
}
5. 创建映射文件
在 src/main/resources 目录下创建对应表的映射文件 UserMapper.xml,同时在 mybatis-config.xml 文件中添加映射文件的引用。
示例 UserMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.mapper.UserMapper">
<select id="selectAll" resultType="com.example.mybatisdemo.entity.User">
SELECT * FROM user;
</select>
<select id="selectById" resultType="com.example.mybatisdemo.entity.User">
SELECT * FROM user WHERE id = #{id};
</select>
<insert id="insert" parameterType="com.example.mybatisdemo.entity.User">
INSERT INTO user VALUES(seq_user.nextval, #{name}, #{age})
</insert>
<update id="update" parameterType="com.example.mybatisdemo.entity.User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteById" parameterType="Long">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
注:其中语句中的表名、序列名、字段名需要替换成自己实际的配置。
6. 创建Mapper接口
在 Java 代码中创建 Mapper 接口,在接口中定义需要操作的 SQL 语句。Mybatis 会通过接口及其对应的 XML 映射文件为我们自动生成对应的实现类。
示例 UserMapper.java:
public interface UserMapper {
List<User> selectAll();
User selectById(Long id);
void insert(User user);
void update(User user);
void deleteById(Long id);
}
7. 注解方式配置Mapper
在 Mapper 接口的方法上使用对应的注解,指定其对应的 SQL 语句。
注解 | 说明 |
---|---|
@Select | 查询语句 |
@Insert | 插入语句 |
@Update | 更新语句 |
@Delete | 删除语句 |
示例:
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> selectAll();
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Long id);
@Insert("INSERT INTO user VALUES(seq_user.nextval, #{name}, #{age})")
void insert(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
void update(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
void deleteById(Long id);
}
注:在注解中的 SQL 语句可以使用${}和#{}作为占位符,其中#{}会自动转义防止 SQL 注入攻击。
8. 测试
最后,在测试类中实例化相应的 Mapper,并调用其中的方法进行测试。
示例:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTests {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectAll() {
List<User> userList = userMapper.selectAll();
Assert.assertEquals(2, userList.size());
}
@Test
public void testSelectById() {
User user = userMapper.selectById(1L);
Assert.assertNotNull(user);
}
@Test
public void testInsert() {
User user = new User();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
Assert.assertNotNull(user.getId());
}
@Test
public void testUpdate() {
User user = new User();
user.setId(1L);
user.setName("李四");
user.setAge(30);
userMapper.update(user);
}
@Test
public void testDeleteById() {
Long id = 1L;
userMapper.deleteById(id);
User user = userMapper.selectById(id);
Assert.assertNull(user);
}
}
总结
本文简要介绍了在 Oracle 数据库中使用 Mybatis 注解方式的详细步骤,包括添加依赖、创建数据库连接配置文件、创建实体类、创建映射文件、创建 Mapper 接口及其注解配置方式、测试等过程。这是 Mybatis 最多人使用的配置方式之一,非常适合小规模项目的数据访问层编程。
附录
完整的示例代码和配置文件可以从 Github 下载。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis注解方式操作Oracle数据库详解 - Python技术站