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

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日

相关文章

  • Linux系统下修改mysql字符集为UTF8步骤

    下面是在Linux系统下修改mysql字符集为UTF8的完整攻略: 1. 确定当前的mysql字符集 在终端中运行以下命令来查看当前mysql数据库的字符集: mysql -u username -p 输入密码登录后,在mysql终端页面运行以下命令: SHOW VARIABLES WHERE Variable_name LIKE ‘character\_s…

    database 2023年5月21日
    00
  • Zabbix 监控PHP-FTPM、Tomcat、Redis应用

    一、zabbix 监控 PHP-FPM应用实战Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP-FPM呢,我们说PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHP FastCGI管理器,它提供了更好的P…

    Redis 2023年4月11日
    00
  • SQL – ORDER BY 语句

    SQL-ORDER BY 语句 ORDER BY 是 SQL 的一种排序语句,用于按照指定的字段对查询结果进行排序。可以根据升序(ASC)或降序(DESC)进行排序。 ORDER BY 通常与 SELECT 语句一起使用。语法如下: SELECT column1, column2, … FROM table_name ORDER BY column1, …

    database 2023年3月27日
    00
  • Zend Framework数据库操作技巧总结

    Zend Framework数据库操作技巧总结 Zend Framework是一款成熟的PHP框架,它提供了许多强大的工具和组件,方便Web应用程序的开发。其中,数据库操作是Web应用程序中最常用的功能之一。因此,在本文中,我们将讲解一些在Zend Framework中使用数据库的技巧和方法。 一、数据库连接 Zend Framework提供了多种方法来连接…

    database 2023年5月22日
    00
  • ADODB结合SMARTY使用~超级强

    ADODB是一款非常流行的PHP数据访问库,而Smarty则是一款模板引擎,将二者结合起来可以实现非常强大的Web应用程序。下面是ADODB结合Smarty使用的完整攻略。 步骤一:安装ADODB和Smarty 使用ADODB和Smarty必须先安装它们。可以通过Composer来安装这两个库。 composer require adodb/adodb-ph…

    database 2023年5月22日
    00
  • Oracle数据库如何创建第一张表

    下面是Oracle数据库创建第一张表的完整攻略: 一、登录到Oracle数据库 首先,在命令行或图形界面工具中登陆Oracle数据库。可以使用以下命令进行登录: sqlplus username/password@database 其中,username是数据库的用户名,password是登录密码,database是数据库名字。例如,如果您的用户名为test…

    database 2023年5月21日
    00
  • Oracle AWR(自动工作量资料档案库)的管理与维护详解

    Oracle AWR的管理与维护详解 简介 Oracle AWR(自动工作量资料档案库)是Oracle数据库自带的一个工具,可以记录数据库的性能数据并生成性能分析报告。通过对AWR报告的分析,可以定位数据库出现性能问题的原因并进行优化。 AWR的管理与维护是使用Oracle数据库的必备技能之一。下面将详细介绍如何管理和维护AWR。 开启AWR 在Oracle…

    database 2023年5月22日
    00
  • centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~

      mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server   mysql官网的安装说明http://dev.mysql.com/doc/refman/5.6/en/source-installation.html…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部