返回顶部
首页 > 资讯 > 数据库 >SpringBoot实现ORM操作MySQL的几种方法
  • 147
分享到

SpringBoot实现ORM操作MySQL的几种方法

2024-04-02 19:04:59 147人浏览 八月长安
摘要

目录1.第一种方式:@Mapper2.第二种方式@MapperScan3.第三种方式:Mapper文件和Dao接口分开管理4.事务使用mybatis框架操作数据,在SpringBoo

使用mybatis框架操作数据,在SpringBoot框架中集成mybatis

使用步骤:

mybatis起步依赖:完成mybatis对象自动配置,对象放在容器中。

    <dependencies>
<!--        WEB起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        mybaitis起步依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
<!--        Mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
<!--        测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

pom.xml指定把src/main/java目录中的xml文件包含到classpath中。

    <build>

<!--        resources插件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**
@Mapper
public interface StudentDao {
    Student selectById(@Param("stuId") Integer id);
}

创建Dao接口对应的Mapper文件,xml文件,写sql语句。


@Mapper
public interface StudentDao {
    Student selectById(@Param("stuId") Integer id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "Http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.firewolf.dao.StudentDao">
<!--    定义sql语句-->
    <select id="selectById" resultType="com.firewolf.model.Student">
        select id,name,age from student where id=#{stuId}
    </select>
</mapper>

创建servlet层对象,创建StudentService接口和它的实现类。去调用dao对象的方法,完成数据库的操作。

package com.firewolf.service;

public interface StudentService {
    Student queryStudent(Integer id);
}

package com.firewolf.service.impl;
@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentDao studentDao;
    @Override
    public Student queryStudent(Integer id) {
        Student student=studentDao.selectById(id);
        return student;
    }
}

创建Controller对象,访问Service。

@Controller
public class StudentController {
    @Resource
    private StudentService studentService;

    @RequestMapping("/student/query")
    @ResponseBody
    public String queryStudent(Integer id){
        Student student = studentService.queryStudent(id);
        return student.toString();
    }
}

写application.properties文件。

配置数据库的连接信息

server.port=9001
server.servlet.context-path=/ORM
# 连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.passWord=991231gao
 

1.第一种方式:@Mapper

@Mapper:放在dao接口的上面,每个接口都需要使用这个注解。


@Mapper
public interface StudentDao {
    Student selectById(@Param("stuId") Integer id);
}

2.第二种方式 @MapperScan


@SpringBootApplication
@MapperScan(basePackages = {"com.firewolf.dao","com.firewolf.mapper"})
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

3.第三种方式:Mapper文件和Dao接口分开管理

现在把Mapper文件放在resources

  1. 在resources目录中创建子目录,例如mapper
  2. 把mapper文件放到mapper目录中。
  3. 在application.properties文件中,指定mapper文件的目录。
# 指定mapper文件的位置
mybatis.mapper-locations=classpath:mapper*.*</include>
                </includes>
            </resource>
        </resources>

4.事务

spring框架中的事务

管理事务的对象:事务管理器(接口,接口有很多的实现类)。

例如:使用jdbc或mybatis访问数据库,使用事务管理器:DataSourceTransactionManager

声明式事务:在xml配置文件或者使用注解说明事务控制的内容。

控制事务:隔离级别,传播行为,超时时间。

事务处理方式

  • spring框架中的@Transactional
  • aspectj框架可以在xml配置文件中,声明事务控制的内容。

springboot中使用事务:上面的两种方式都可以。

  • 在业务方法的上面加入@Transactional,加入注解后,方法有事务功能了。
  • 明确在主启动类的上面,加入@EnableTransactionManager。
@SpringBootApplication

@EnableTransactionManagement

@MapperScan(value="com.firewolf.dao")
public class Application {
   public static void main(String[] args) {
           SpringApplication.run(Application.class, args);
   }
}

例子:


@Transactional
@Override
public int addStudent(Student student) {
    System.out.println("业务方法addStudent");
    int rows  =  studentDao.insert(student);
    System.out.println("执行sql语句");

    //抛出一个运行时异常, 目的是回滚事务
    //int m   = 10 / 0 ;

    return rows;
}

到此这篇关于SpringBoot实现ORM操作MySQL的几种方法的文章就介绍到这了,更多相关SpringBoot ORM操作MySQL内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: SpringBoot实现ORM操作MySQL的几种方法

本文链接: https://lsjlt.com/news/139787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot实现ORM操作MySQL的几种方法
    目录1.第一种方式:@Mapper2.第二种方式@MapperScan3.第三种方式:Mapper文件和Dao接口分开管理4.事务使用mybatis框架操作数据,在springboo...
    99+
    2024-04-02
  • SpringBoot实现ORM操作MySQL的方法有哪些
    这篇文章主要介绍了SpringBoot实现ORM操作MySQL的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot实现ORM操作MySQL的方法有哪些文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • android操作XML的几种方法总结
    XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现。其标准型,可靠性,安全性......毋庸置疑。在android平台上,我们要想实现数据存储和数据...
    99+
    2022-06-06
    XML 方法 Android
  • python2.7连接操作redis的几种方法
    python版本:2.7首先需要先安装redis模块:wget https://pypi.python.org/packages/source/r/redis/redis-2.10.3.tar.gztar zxvf redis-2.10.3...
    99+
    2023-06-02
  • Android中实现多线程操作的几种方式
    目录前言 最基础的方式 继承Thread类并实现run()方法 匿名内部类实现Runnable接口callable+FutureTask 线程池 手动创建线程池 使用Executor...
    99+
    2024-04-02
  • ORM模型框架操作mysql数据库的方法
    【什么是ORM】 ORM 全称是(Object Relational Mapping)表示对象关系映射; 通俗理解可以理解为编程语言的虚拟数据库; 【理解ORM】 用户地址信息数据库...
    99+
    2024-04-02
  • 轻量级ORM框架Dapper应用实现In操作的方法
    本篇内容介绍了“轻量级ORM框架Dapper应用实现In操作的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Dapper使用in操作符的...
    99+
    2023-06-29
  • MySQL 实现FULL JOIN的几种方式
    MySQL中没有full join 但我我们可以通过以下几种方式来实现 注意:UNION 和 UNION ALL 的区别, UNION 会自动去重而UNION ALL不...
    99+
    2023-09-05
    mysql
  • Springboot实现通用Auth认证的几种方式
    目录前言 传统AOP实现 扩展 Interceptor实现 扩展 ArgumentResolver实现扩展 Filter扩展 小结前言 最近一直被无尽的业务需求淹没,没时间喘息,终...
    99+
    2024-04-02
  • node.js中实现同步操作的3种实现方法
    众所周知,异步是得天独厚的特点和优势,但同时在程序中同步的需求(比如控制程序的执行顺序为:func1 -> func2 ->func3 )也是很常见的。本文就是对这个问题记录自己的一些想法。 需...
    99+
    2022-06-04
    操作 方法 node
  • Mac 安装Maven的几种方法和操作步骤
    Mac 安装Maven的几种方法和操作步骤 方法一:通过Homebrew安装Maven方法二:通过官方网站下载安装包安装Maven方法三:通过SDKMAN安装Maven Maven是一种常用的Java构建工具,它可以自动化构建、...
    99+
    2023-08-30
    maven macos java
  • Mysql 优化的几种方法
    MySQL是当前最流行的一个关系型数据库管理系统,广泛应用于各种互联网应用场景中。然而在实际的开发和运维过程中,我们经常会遇到一些性能问题,如查询慢、请求堆积等,需要通过MySQL优化来解决。本文将详细讲解MySQL优化的原理、方法和工具,...
    99+
    2023-08-19
    mysql 数据库 java
  • MySQL几种更新操作的案例分析
    目录案例分析更新账户金额直接更新乐观锁方案无锁方案排队操作常见问题如果数据中存在 update_time 字段受影响的行数是多少?如果执行 update 更新但受影响的行数...
    99+
    2024-04-02
  • springboot接收List入参的几种方法
    目录第一种方式:使用@ModelAttribute 注解 + 对象接收 第二种方式: 使用 @RequestParam 注解接收第三种方式:利用数组接收第四种方式...
    99+
    2024-04-02
  • Android开发之子线程操作UI的几种方法
     在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 在看方法之前需要了解一下Andro...
    99+
    2022-06-06
    方法 android开发 线程 Android
  • Pytorch可视化的几种实现方法
    目录一,利用 tensorboardX 可视化网络结构二,利用 vistom 可视化三,利用pytorchviz可视化网络结构一,利用 tensorboardX 可视化网络结构 参...
    99+
    2024-04-02
  • 基于SpringBoot生成二维码的几种实现方式
    目录一、基于Google开发工具包ZXing生成二维码二、基于开源的Hutool工具生成二维码本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发...
    99+
    2024-04-02
  • Python 连接 MySQL 的几种方法
    尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发、亦或是机...
    99+
    2022-05-26
    python MySQL python 连接MySQL
  • VUE中操作dom元素的几种方法(最新推荐)
    目录VUE中操作dom元素方法一:方法二:vue操作dom元素的三种方法介绍和分析以下是常用的三种方法:1、jQuery操作dom(推荐指数:★☆☆☆☆):2、原生js操作dom(推...
    99+
    2022-12-08
    vue操作dom元素 vue操作dom
  • JavaScript深拷贝的几种实现方法实例
    目录浅拷贝与深拷贝1.JSON.parse(JSON.stringify(obj))2.普通递归函数实现深拷贝3.兼容多种数据类型4.jQuery.extend()方法总结 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作