Mybatis注解方式操作Oracle数据库详解

yizhihongxing

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技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • CentOS 7.0下nginx实现每天定时分割日志

    下面就是 CentOS 7.0 下 nginx 实现每天定时分割日志的完整攻略。 1. 安装 logrotate 工具 logrotate 是 Linux 下用于管理日志文件的工具,我们需要先安装该工具。在 CentOS 7.0 中可以通过 yum 命令安装: sudo yum install logrotate 2. 编写 logrotate 配置文件 在…

    database 2023年5月22日
    00
  • 细说SQL Server中的视图

    当我们需要获取数据库表数据的子集而不想更改表结构时,可以使用SQL Server中的视图(View)。视图是一个虚拟表,它没有自己的数据,而是从基本表中使用SELECT语句取回数据。本文将详细讲解SQL Server中视图的创建、使用以及性能考虑。 1. 视图的创建 1.1 创建基本表 在创建视图之前,我们需要首先创建一个基本表。以下是创建一个简单用户表的示…

    database 2023年5月21日
    00
  • Android开发中的数据库事务用法分析

    Android开发中的数据库事务用法分析 什么是数据库事务 在Android开发中,我们经常会使用SQLite来存储数据。当我们需要执行一系列数据库操作时,可能需要在它们之间保持一致性,确保一些操作执行成功后,其他的操作才能被执行。在这种情况下,使用数据库事务可以帮助我们实现对这些操作的控制,保证操作的正确性。 一个数据库事务通常包括以下四个属性: 原子性(…

    database 2023年5月21日
    00
  • MySQL获得当前日期时间函数示例详解

    MySQL获得当前日期时间函数示例详解 在MySQL中,我们可以使用多种函数获取当前日期和时间。 NOW() 函数 NOW() 函数返回当前的日期和时间。它的语法如下: NOW(); 例如: SELECT NOW(); 输出: 2022-07-06 17:54:50 CURRENT_TIMESTAMP 函数 CURRENT_TIMESTAMP 函数也可以返回…

    database 2023年5月22日
    00
  • mysql 显示SQL语句执行时间的代码

    要显示MySQL语句的执行时间,可以通过以下步骤实现: 打开MySQL客户端(如MySQL Workbench)并连接到目标数据库。 在客户端中执行以下语句: SET profiling = 1; 该命令会开启MySQL的性能分析工具,在后续的所有语句执行过程中,都会生成相应的性能分析数据。 执行需要分析的SQL语句: SELECT * FROM users…

    database 2023年5月22日
    00
  • Linux系统下卸载自带Mysql、Apache、Php

    首先需要说明一下,在Linux系统中,卸载自带的Mysql、Apache、Php,你需要根据你所使用的操作系统和版本选择对应的安装组件,以下是在Ubuntu 18.04系统下卸载自带的Mysql、Apache、Php的完整攻略。 卸载Mysql 先检查你的系统中是否安装了Mysql 在终端输入以下命令检查你的系统中是否安装了Mysql: dpkg -l | …

    database 2023年5月22日
    00
  • Oracle中插入特殊字符:&和’的解决方法汇总

    下面是详细讲解“Oracle中插入特殊字符:&和’的解决方法汇总”的完整攻略。 问题描述 在Oracle数据库中,有些情况下需要插入特殊字符&和’,但是直接插入会导致SQL语句执行出错,如何解决这个问题呢? 解决方法汇总 1. 转义特殊字符 在需要插入的字符串前面加上\可以转义特殊字符,使其能被正确插入到数据库,例如: INSERT INTO…

    database 2023年5月21日
    00
  • CentOS6.7系统中编译安装MariaDB数据库

    下面是CentOS6.7系统中编译安装MariaDB数据库的完整攻略: 安装必要的依赖库和软件 首先需要安装对应的依赖库和软件: yum -y update yum -y groupinstall "Development tools" yum -y install cmake ncurses-devel libxml2-devel zl…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部