`

springboot-第八章 SpringBoot2.x持久化数据方式介绍

 
阅读更多

java访问数据库的几种方式

1.原生的jdbc

2.Apache dbutils 比原生的jdbc简单点

3.jpa框架spring-daddtda-jpa ,在复杂查询的时候性能不是很好

4.hibernate框架 ORM框架

5.Mybatis框架 互联网行业通常使用mybatis,半ORM

 

https://blog.csdn.net/a532672728/article/details/77857056

 

CREATE TABLE user1 (

        id int NOT NULL ,

        name varchar(128),

        password varchar(16),

        phone varchar(16) ,

        create_time timestamp,

        age int,

        PRIMARY KEY (id)

 

create sequence seq_user1_id

increment by 1

start with 1

maxvalue 999999999;

 

整合完成后运行页面报 ORA-01017: invalid username/password 经过确认是自己写错了:

 

spring.datasource.data-username=test
spring.datasource.data-password=test

 争取如下:

spring.datasource.username=test
spring.datasource.password=test

 

 

启动时警告 oracle.jdbc.driver.OracleDriver not found

将DriverClassName以前的oracle.jdbc. driver.OracleDriver 修改成oracle.jdbc.OracleDriver。

 

<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.0.0</version>
</dependency>

<dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc6</artifactId>
   <version>11.2.0.4</version>
</dependency>
 
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:test
spring.datasource.username=test
spring.datasource.password=test
#开启mybatis的日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
 
@MapperScan("com.kevin.autogenproject.mapper")
public class AutogenprojectApplication{
public interface UserMapper {
    @Insert("insert into user1(id,name,password,age,create_time)values(seq_user1_id.nextval,#{name},#{password},#{age},#{createTime})")
        //@Options(useGeneratedKeys = ture,keyProperty = "id",keyColumn = "user_id") mysql的自增列会用到.user_id指只增列列名
int insert(User user);

    @Select("select * from user1")
    @Results({
            @Result(column = "create_time",property = "createTime")
    })
    List<User> getAll();

    @Select("select * from user1 where id = #{id}")
    @Results({
            @Result(column = "create_time",property = "createTime")
    })
    User findById(int id);

    @Update("update user1 set name=#{name} where id =#{id}")
    void updateUser(User user);

    @Delete("delete from user1 where id = #{id}")
    void deleteUser(User user);
}
@Service
public class UserServiceImpl implements UserService{

    @Autowired
private UserMapper mapper;

    @Override
public int addUser(User user)
    {
        mapper.insert(user);
        return user.getId();
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
    public int addAccount(User user) {
        mapper.insert(user);
        int i=9/0;
        return 0;
    }
}
 
@RestController
@RequestMapping("/api/v1/user")
public class UserController {

    @Autowired
private UserService servcie;

    @Autowired
private UserMapper mapper;
    @RequestMapping("/add")
    public void addUser()
    {
        User user = new User();
        user.setAge(1);
        user.setName("kevin");
        user.setPassword("123");
        user.setCreateTime(new Date());
        servcie.addUser(user);
    }
    @RequestMapping("/all")
    public Object selectAll()
    {
        return mapper.getAll();
    }
    @RequestMapping("/one")
    public Object selectOne(int id)
    {
        return mapper.findById(id);
    }

    @RequestMapping("/update")
    public void update(int id, String name)
    {
        User user = new User();
        user.setId(id);
        user.setName(name);
        mapper.updateUser(user);
        System.out.println("update success");
    }
    @RequestMapping("/delete")
    public void delete(int id)
    {
        User user = new User();
        user.setId(id);
        mapper.deleteUser(user);
        System.out.println("delete success");
    }
@RequestMapping("/add_account")
    public void addAccount()
    {
        User user = new User();
        user.setAge(1);
        user.setName("kevin");
        user.setPassword("123");
        user.setCreateTime(new Date());
        servcie.addAccount(user);
    }
}
 
事务的隔离级别
四种
read committed 大多数数据库的默认事务级别。
事务的传播机制
REQUIRED 最常用
SUPPORTS
MANDATORY
REQUIRES_NEW
NOT_SUPPORTED
NEVER
SpirngBoot中在Service层的方法上添加事务的传播机制 @Transactional(propagation = Propagation.REQUIRED),一般事务的隔离级别时默认的,默认的值指向了数据库的隔离界别。
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    【Springboot开发】资源springboot-plus-v2.7.18.zip

    "springboot-plus-v2.7.18.zip"可能包含了对Spring Data JPA和MyBatis的集成,这两种持久层框架都提供了方便的数据访问。Spring Data JPA简化了JPA的操作,而MyBatis则提供了更灵活的SQL映射。 6. **安全控制...

    SpringBoot-第二天.pdf

    SpringBoot是当下非常流行的一款企业级快速开发框架,它基于Spring框架,旨在简化Spring应用的...同时,理解SpringBoot和Mybatis的集成方式,能够帮助开发者在面对不同的数据持久化需求时,快速选择和实现解决方案。

    springboot-demo.zip

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 ...

    springboot-spring-data-jpa项目练习

    8. **数据持久化**:理解JPA的保存(`save()`)、更新(`saveAndFlush()`)、查询(`findAll()`, `findById()`等)、删除(`deleteById()`)等操作的工作原理,以及事务管理的概念。 这个"springboot-spring-data-...

    IDEA SpringBoot-Mybatis-plus 实现增删改查(CRUD).doc

    Mybatis 是一个数据持久化框架,Mybatis-Plus 是对 Mybatis 的增强版本,封装了基本的增删改查操作,使开发者不需要再写很多重复的代码,大大提高了开发效率。 第二部分:创建 Spring Boot 项目 在 IDEA 中创建一...

    SpringBoot2.x入门到项目实战

    **SpringBoot2.x入门到项目实战** SpringBoot是由Pivotal团队提供的全新框架,其设计目的是简化Spring应用的初始搭建以及开发过程。SpringBoot通过自动配置、起步依赖和内嵌Servlet容器等方式,使得创建和运行一个...

    springboot-集成redis

    SpringBoot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring ...这只是一个基础集成,随着需求的增加,你可能需要进一步学习 Redis 的数据结构特性、事务、持久化、集群等方面的知识,以充分利用 Redis 的强大功能。

    基于SpringBoot + vue + Element-UI 搭建的个人博客系统.zip

    在本项目中,SpringBoot可能被用来处理HTTP请求,提供RESTful API,以及进行数据持久化。 2. **Spring Data JPA**:这是Spring的一个模块,用于简化数据库访问,提供了基于注解的接口来操作数据库。开发者可以通过...

    SpringBoot实战(第4版)

    6.1 使用 GORM 进行数据持久化 ................. 93 2 目 录 6.2 使用 Groovy Server Pages 定义视图 ....... 98 6.3 结合 Spring Boot 与 Grails 3 ................. 100 6.3.1 创建新的 Grails 项目 ..............

    spring-boot-starter-mybatis-spring-boot-1.3.3.tar.gz

    在现代Java开发领域,Spring Boot以其便捷的初始化、自动配置和微服务架构等特点,已经成为主流的开发框架。而MyBatis作为一款优秀的持久层框架,以其灵活的SQL映射和易于使用的特性,深受开发者喜爱。本文将详细...

    01-SpringBoot-App:01-SpringBoot-App

    - 如果你的项目包含 `spring-boot-starter-data-jpa`,那么你可以轻松地集成和操作数据库,比如 MySQL、PostgreSQL,使用 JPA 和 Hibernate 进行数据持久化。 7. **RESTful API 设计** - Spring Boot 可以方便地...

    社区网格化管理平台的构建论文-java-springboot-社区网格化管理平台的构建文档-文档-论文

    2. **框架**:Spring Boot,这是一个简化Spring应用搭建和开发过程的框架,它能够自动配置Spring和第三方库,极大地提高了开发效率。 3. **架构模式**:B/S架构结合MVC模式。B/S(Browser/Server)架构意味着客户端...

    springboot-demo

    2. **SpringBoot**:SpringBoot 基于 Spring 框架,但通过“约定优于配置”的方式,简化了 Spring 应用的初始化和配置。它默认配置了很多常用的功能,比如内嵌的 Tomcat 服务器,自动配置的 Starter 包等。 3. **...

    SpringBoot2.0.3-Demo简单的完整示例

    它集成了大量的常用第三方库配置,如数据源、JPA、定时任务等,通过“约定优于配置”的原则,大大减少了项目配置的工作量。 2. **SpringBoot 2.0.3**:这是SpringBoot的一个特定版本,相比早期版本,它引入了更多...

    SpringBoot2.0-Actuator监控参数说明

    可以通过集成Prometheus或Graphite等第三方工具,将Actuator收集的监控数据持久化,进行长期的趋势分析和报警设置。 总之,Spring Boot 2.0的Actuator是实现微服务监控的重要工具,它提供了丰富的功能,帮助开发者...

    springboot开发的视频网站源码.zip

    2. MyBatis作为ORM数据库持久化框架,配合TkMapper使用 3. 视图解析器采用了thymeleaf 4. 前段UI框架采用BootStrap4.0.0, 配合Layui UI经典模块化前端框架 5. 在线播放器采用CkPlayer6.7 6. 百度多平台分享插件

    13 springboot项目-准备数据和dao类

    在本项目中,"13 springboot项目-准备数据和dao类" 主要涉及的是Spring Boot框架中的数据访问层(DAO)设计与实现,以及如何为Spring Boot项目配置和准备必要的资源。首先,我们需要理解Spring Boot是Spring框架的一...

    基于java的-152-springboot大学生体质测试管理系统--LW-源码.zip

    11. **定时任务**:如果系统包含定期体质测试提醒或数据分析功能,可能会使用SpringBoot的定时任务(@Scheduled)或Quartz等第三方库。 综上所述,这款基于Java的SpringBoot大学生体质测试管理系统充分利用了...

    course-springboot-2-java-11

    《SpringBoot 2与Java 11深度学习教程》 在现代软件开发中,Spring Boot 和 Java 是两个不可或缺的关键技术。Spring Boot 提供了一个快速构建和运行微服务的框架,而Java 11是Oracle推出的长期支持版本,带来了许多...

    springboot084基于springboot的论坛网站.zip

    3. **Spring Data JPA** 或 **MyBatis**:数据持久化框架,用于与数据库进行交互,实现对用户信息、帖子、评论等数据的CRUD操作。 4. **Spring Web MVC**:Spring提供的Web MVC框架,处理HTTP请求,实现业务逻辑与...

Global site tag (gtag.js) - Google Analytics