SpringBoot - 03 - SpringBoot JPA MySQL Demo样例

搭建SpringBoot和Mysql Demo 在上一篇文章中,介绍了如何搭建一个SpringBoot项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBoot和MySQL的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在和数据库打交道。比如APP传递的数据需要进行持久化,方便下一次来获取;存储设备运行日志,将设备的执行日志存放到数据库中,方便排查错误,开放接口方便用户进行自主查询。因此,接下来就来搭建一个SpringBoot和MySQL项目,并且在结尾的地方会指出新手会触犯的一些规范。 阅读详情

SpringBoot 使用 JPA 连接MySQL 完整 Demo 样例

完整项目已经提交到GitHub上:SpringBoot-JPA-MySQL Demo样例

我用的是自己搭建的Linux环境中的MySQL,不管它只要有MySQL就行了吧,不管你是Windows上面,还是自己搭的Linux都行...

项目工程结构:

 

先看下项目中使用到的RESTful风格的API

如果你并不是很明白什么是RESTful,推荐你看下阮一峰的这篇博文:《理解RESTful 架构》

 

好了,废话不多说,直接怼代码:

先看下application.properties配置文件:

server.port=9001

server.servlet.context-path=/sp-demo

logging.config=classpath:conf/logback-config.xml

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.137.150:3306/test_database_01
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=mysql

上面的参数都很好理解吧..

端口、上下文路径、logback配置文件路径、数据库设置、jpa设置

logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="30 seconds" debug="false">

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="./log"/>

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!-- Console 输出设置 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <!--  显示毫秒数
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/02-springboot-demo.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- * 通配符 设置log打印级别 对所有类有效TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF-->
    <!--将上面的appender添加到root-->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

项目中创建的数据库、表:

CREATE DATABASE test_database_01;

CREATE TABLE `girl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) DEFAULT NULL,
  `cup_size` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Application主类没什么修改的,这里就不贴出来了。

Girl bean对象

package com.server.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;


/**
 * @author CYX
 * @create 2018-07-10-18:55
 */

@Entity
@Table(name = "girl")
public class Girl extends Pagination {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;

    @Column(name = "cup_size")
    private String cupSize;

    @Column(name = "age")
    private Integer age;

    public Girl() {
    }

    @Override
    public String toString() {
        return "Girl{" +
                "id=" + id +
                ", cupSize='" + cupSize + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

 

@Entity注解:指明这是一个和数据库表映射的实体类.

@Table注解:指明这个bean对象指向的数据库表

@Id注解:指明这个属性映射为数据库的主键.

@GeneratedValue:默认使用主键生成方式为自增.

@Column注解:指明这个Bean字段对应数据库中的哪个字段

分页对象

package com.server.bean;

/**
 * 分页参数对象
 *
 * @author CYX
 * @create 2018-07-14-19:36
 */
public class Pagination {

    /**
     * 分页页码,默认1
     */
    private int page = 1;

    /**
     * 分页每页数量,默认20
     */
    private int pageSize = 20;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    @Override
    public String toString() {
        return "Page{" +
                "page=" + page +
                ", pageSize=" + pageSize +
                '}';
    }
}

上面两个bean类,是测试载体,其中Girl 继承了Pagination分页Bean,用于后面测试分页。

JPA 实现类

package com.server.repository;

import com.server.bean.Girl;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * JPA实现类
 *
 * @author CYX
 * @create 2018-07-10-18:44
 */
public interface GirlRepository extends JpaRepository<Girl, Integer> {

    /**
     * 通过年龄查询女生信息
     *
     * @param age 年龄
     * @return
     */
    List<Girl> findGirlsByAge(Integer age);

    /**
     * 根据年龄、cupsize查询女生信息
     *
     * @param age
     * @param cupSize
     * @return
     */
    List<Girl> findGirlsByAgeAndCupSize(Integer age, String cupSize);

    /**
     * 根据cupSize查找女生
     * <br>
     * 使用自定义SQL语句
     * <br>
     * '@Query':实用类配置自定义SQL的注解,后面参数nativeQuery = true,才是表明使用原生SQL.
     * 如果不配置,默认是false,则使用HQL查询方式.
     *
     * @param cupSize
     * @return
     */
    @Query(value = "SELECT g.id , g.age , g.cup_size FROM girl AS g where g.cup_size = ?1", nativeQuery = true)
    List<Girl> findGirlsByCupSize(String cupSize);

}

下面看下Controller类

package com.server.controller;

import com.server.bean.Girl;
import com.server.repository.GirlRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 女生-Controller
 *
 * @author CYX
 * @create 2018-07-10-18:59
 */
@RestController
public class GirlController {

    private static final Logger LOGGER = LoggerFactory.getLogger(GirlController.class);

    @Autowired
    private GirlRepository girlRepository;

    /**
     * 添加一个女生信息
     *
     * @param cupSize
     * @param age
     * @return
     */
    @PostMapping(value = "/girls")
    public String addGirlInfo(@RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age) {

        final String method = "addGirlInfo";
        LOGGER.info("method : {} , cupSize : {} , age : {} - start", new Object[]{method, cupSize, age});

        Girl girl = new Girl();
        girl.setCupSize(cupSize);
        girl.setAge(age);

        Girl resultGirl = girlRepository.save(girl);

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, resultGirl});
        return resultGirl.toString();

    }

    /**
     * 通过id查询一个女生信息
     *
     * @param id
     * @return
     */
    @GetMapping(value = "/girls/{id}")
    public Girl getGirlInfoByID(@PathVariable("id") Integer id) {

        final String method = "getGirlInfoByID";
        LOGGER.info("method : {} , id : {} - start", new Object[]{method, id});

        Girl girl = girlRepository.findById(id).get();

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, girl.toString()});
        return girl;
    }

    /**
     * 通过id更新女生信息
     *
     * @param id
     * @param cupSize
     * @param age
     * @return
     */
    @PutMapping(value = "/girls/{id}")
    public String updataGirlByID(
            @PathVariable("id") Integer id,
            @RequestParam("cupSize") String cupSize,
            @RequestParam("age") Integer age) {

        final String method = "updataGirlByID";
        LOGGER.info("method : {} , id : {} , cupSize : {} , age : {} - start", new Object[]{method, id, cupSize, age});

        Girl girl = new Girl();
        girl.setId(id);
        girl.setAge(age);
        girl.setCupSize(cupSize);

        Girl result = girlRepository.save(girl);

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result.toString()});
        return result.toString();
    }


    /**
     * 获取所有女生信息
     *
     * @return
     */
    @GetMapping(value = "/girls")
    public List<Girl> getAllGirlsInfos() {

        final String method = "getAllGirlsInfos";
        LOGGER.info("method : {} - start", new Object[]{method});

        List<Girl> girls = girlRepository.findAll();

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, girls.toString()});
        return girls;
    }

    /**
     * 通过id删除一个女生信息
     *
     * @param id
     * @return
     */
    @DeleteMapping(value = "/girls/{id}")
    public Boolean deleteGirlInfoByID(@PathVariable("id") Integer id) {

        final String method = "deleteGirlInfoByID";
        LOGGER.info("method : {} , id : {} - start", new Object[]{method, id});

        boolean result = true;

        try {
            girlRepository.deleteById(id);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
            result = false;
        }

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result});
        return result;

    }

    /**
     * 通过age查询女生信息
     *
     * @param age
     */
    @GetMapping(value = "/girls/byAge/{age}")
    public List<Girl> findGirlsByAge(@PathVariable("age") Integer age) {

        final String method = "findGirlsByAge";
        LOGGER.info("method : {} , age : {} - start", new Object[]{method, age});

        List<Girl> result = null;
        try {
            result = girlRepository.findGirlsByAge(age);
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        }

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result});
        return result;
    }

    /**
     * 通过年龄和cupSize查找女生信息
     *
     * @param age
     * @param cupSize
     * @return
     */
    @GetMapping(value = "/girls/byAgeAndCupSize")
    public List<Girl> findGirlsByAgeAndCupSize(Integer age, String cupSize) {

        final String method = "findGirlsByAgeAndCupSize";
        LOGGER.info("method : {} , age : {} , cupSize : {} - start", new Object[]{method, age, cupSize});

        List<Girl> result = null;
        try {
            result = girlRepository.findGirlsByAgeAndCupSize(age, cupSize);
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        }

        LOGGER.info("method : {} , result : {} - end ", new Object[]{method, result});
        return result;
    }

    /**
     * 获取女生信息列表-根据年龄排序
     *
     * @return
     */
    @GetMapping(value = "/girls/sortByAge")
    public List<Girl> findAllGirlsWithSort() {

        final String method = "findAllGirlsWithSort";
        LOGGER.info("method : {} - start", new Object[]{method});

        List<Girl> result = null;
        try {
            result = girlRepository.findAll(new Sort(Sort.Direction.ASC, "age"));
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        }

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result});
        return result;
    }

    /**
     * 查询女生信息-分页
     *
     * @param page
     * @return
     */
    @GetMapping(value = "/girls/byPage")
    public List<Girl> findGirlsByPage(@RequestParam("page") int page) {

        final String method = "findGirlsByPage";
        LOGGER.info("method : {} , page : {} - start", new Object[]{method, page});

        Girl girl = new Girl();
        girl.setPageSize(5);
        girl.setPage(page);

        PageRequest pageRequest = PageRequest.of(girl.getPage() - 1, girl.getPageSize());

        Page<Girl> girlPages = girlRepository.findAll(pageRequest);
        List<Girl> result = girlPages.getContent();

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result});
        return result;
    }

    /**
     * 通过cupSize查询女生信息-使用自定义SQL
     * <p>
     * '@Modifying':该注解配合'@Query'注解使用<br>
     *
     * @param cupSize
     * @return
     */
    @GetMapping(value = "/girls/byCupSize")
    @Modifying
    public List<Girl> findGirlsByCupSize(@RequestParam("cupSize") String cupSize) {

        final String method = "findGirlsByCupSize";
        LOGGER.info("method : {} , cupSize : {} - start", new Object[]{method, cupSize});

        List<Girl> result = null;
        try {
            result = girlRepository.findGirlsByCupSize(cupSize);
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        }

        LOGGER.info("method : {} , result : {} - end", new Object[]{method, result});
        return result;
    }

}

本来是想把一步步怎么测试也贴上来的,想想太麻烦了...

贴个总的吧...测试使用Postman...

SpringBoot 使用JPA 操作 MySQL 增删查改 基本操作就到这里。

后面会把事务补上来,完整的项目代码 上传到了GitHub上,自取:SpringBoot-JPA-MySQL Demo样例

360加固DEX解密与ELF修复技术解析 本文深入解析360加固的DEX解密与ELF修复技术,详细介绍了其多层保护机制、Java层入口分析、Native层加载流程及反调试绕过技巧。通过RC4和zlib解密技术,结合Frida工具实现内存Dump和ELF文件修复,为逆向工程师提供实用解决方案。 阅读详情

相关推荐

E2000 RGMII0通讯异常问题总结

飞腾E2000 RGMII接YT8521,RGMII0路不通问题。

乌拉大喵喵 1629

SpringBoot项目 使用Sprin Data Jpa 操作数据库

1:使用Idea创建SpringBoot项目https://blog.csdn.net/lom9357bye/article/details/696771202:创建数据库3:导入需要的依赖&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:...

TonyWu的博客 595

滚动时域优化方法

滚动时域优化(Receding Horizon Optimization, RHO),也被广泛称为模型预测控制(Model Predictive Control, MPC),是一种用于动态系统优化和控制的。其核心思想是“在每个当前时刻k,控制器只考虑未来一个(称为“预测时域”或“优化时域”,长度N)内的系统行为。(通过测量或估计得到)。(描述状态如何随输入和干扰变化)。(如果有,可能基于历史数据或假设)。在这个有限的未来时域[k, k+N-1]上,求解一个。这个优化问题的目标是找到一个。

m0_69522810的博客 2293

springboot+mybatis+mysql项目搭建,含示例Demo

写在前面 本文主要描述了如何使用IntelliJ,从零开始搭建一个springboot+mybatis+mysql项目。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。 本文使用到的东西 IntelliJ 2019 springboot mybatis mysql 1.新建项目 1.打开IntelliJ,选择“Spring Initializr”,点击下一步。 2.项目的type固定为“M...

玖涯博客 5903

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码)

本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。

weixin_30736301的博客 310

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3396

springboot集成 mysql快速入门demo

一、mysql环境搭建采用docker-compose搭建,配置如下:docker-compose.ymlversion: '3' services: mysql: image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 # 原镜像`mysql:5.7` container_name: mysql_3306 ...

HBLOG 963

UNet改进(24):注意力机制-从基础原理到高级融合策略

本文系统探讨了如何通过引入各类注意力机制增强UNet在医学图像分割中的性能。文章分为基础篇、进阶篇和高级篇三个层级:基础篇介绍了时序注意力、可变形注意力、分层注意力等8种基础机制;进阶篇提出了5种混合注意力设计;高级篇则探讨了全局+局部+多尺度等复杂组合机制。实验表明,这些注意力模块在心脏MRI、肺部感染等任务中能提升2-15%的分割精度。文章还提供了硬件适配建议和完整实现代码,为研究者提供了全面的技术参考。未来方向包括NAS优化、量子注意力等前沿探索,为UNet在医疗影像等领域的应用革新提供了理论指导。

2501_91516851的博客 764

Spring系列:JPA实战(完整Demo)

效果 Demo pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd...

NIO4444 1507

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 332

PyTorch深度学习项目实战100例数据集

最近很多订阅了的用户私信咨询有些数据集下载不了以及一些文章中没有给出数据集链接,为了解决这个问题,专门开设了本篇文章,提供数据集下载链接,打包100例的所有数据集。本专栏适用人群:深度学习初学者,专栏将具体讲解如何快速搭建深度学习模型用自己的数据集实现深度学习小项目。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 2万+

SpringBoot整合StringData JPA

SpringBoot整合StringData JPA 目录 SpringBoot整合StringData JPA application.yml User.class UserRepository.java UserContro...

weixin_30632089的博客 109

thermal系列(5)-DTSI中配置Thermal

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录thermal系列目录DTSI中配置ThermalDTSI节点类型描述CPU0的配置举例CPU核hot-plugging举例修改热缓解阈值DTSI的node中带有tracks-lowDTSI中关闭某个Thermal Zones thermal系列目录 thermal系列(1)-引言部分 thermal.

fulinux的博客 1232

《Spring Boot实战指南》03-06:Spring Boot整合JPA

--

西安极客联盟 961

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

springboot对JPA的支持

springboot对JPA的支持主要内容springboot之jpa入门Springboot+bootstrap对jpa应用 主要内容 1、springboot之jpa支持 2、Springboot+bootstrap界面版之增删改查及图片上传 springboot之jpa入门 然后加代码 server: port: 81 servlet: context-path: / spring: jpa: hibernate: ddl-auto: update s

m0_47906344的博客 209

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

springboot对jpa的支持

springboot对jpa的支持springboot对jpa的支持 springboot对jpa的支持 新建的项目 pom依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X...

water_java的博客 225

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jpa mysql 模糊查询,springboot使用JPA时间类型进行模糊查询的方法

springboot使用JPA时间类型进行模糊查询的方法这个问题是我自己开发中遇到的问题 数据库使用的是mysql5.6 字段名称为checkingTime 类型为timestamp显而易见 存到库中的是保留6位毫秒 即yyyy-MM-dd HH:mm:ss.ssssss此时需求是精确到分钟的相同时间 不进行存储这时候就需要进行模糊查询 搜了一圈百度 并没有什么好用的方法我的bean类定...

weixin_33849758的博客 709

Springboot03整合SpringDataJPA访问MySQL数据库

使用SpringBoot访问MySQL数据库,并且结合SpringDataJPA完成CRUD(Create,Read,Update,Delete 结合 Springboot01 中的demo案例 Springboot01创建第一个程序 1 添加 pom.xml 依赖 &lt;dependency&gt; &lt;groupId&gt;org.sprin...

代码小疯子 1164

JPA常用功能

一.Springboot下JPA根据实体类自动建表(Demo使用mysql数据库,alibaba线程池) 1.Maven中引入相应依赖 <!-- JPA --> <dependency> <groupId>org.springframework.boot</groupId> ...

weixin_28760063的博客 791

IDEA2023+JDK17+SpringBoot3+MySQL8后端接口开发实战课笔记

花了很长的时间,终于把心心念念的SpringBoot3的实战课整理出来了。今天是开心的一天,因为又多了一门课程可以奉献给大家,也是难过的一天,那就是又要开始重新找工作了。如果我的粉丝里面有关于Golang或者Python的相关工作推荐,欢迎您私信我,我最近需要找一份新的工作。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 915

jpa实现根据条件删除_JPA常用功能Demo(增删改查、动态条件查询、分页排序、@Query语句、返回自定义实体)...

一.Springboot下JPA根据实体类自动建表(Demo使用mysql数据库,alibaba线程池)1.Maven中引入相应依赖org.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-java5.1.46com.alibabadruid1.1.42.配置application.ymlddl-auto可选参...

weixin_29282577的博客 639

springboot2.0集成dbcp2连接mysql

Dev environment : maven 3.54 、mysql 8、jdk 1.8 、 springboot 2.0 项目 DEMO 如下: https://github.com/medoo-Ai/springbootMYSQL 1、创建maven项目,引入依赖,配置yml 配置文件 2、 监听数据库连接池的类型,在 database 包下 @Component pub...

Syntacticsugar's blog 2371

一起学Springboot -- 第四节 Spring-data-jpa 操作MySQL数据库(一)

数据库操作,SpringDataJpa的使用 SpringDataJpa 简介导入依赖数据库参数配置创建实体类@RestController@RequestMappingSpringboot 是什么学Springboot 需要先学Spring 吗为什么要用 Springboot为什么要写这个教程开发环境新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂...

kk鲁 643

mysql jpa List_jpa查询数据库返回list

springboot(五):spring data jpa的使用在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案...文章纯洁的虫纸2016-09-281...

weixin_33252222的博客 1061

springBoot03- springboot+jpa+thymeleaf增删改查

参考http://www.mooooc.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 项目结构: 1.模版下载: http://start.spring.io/ 在搜索框分别输入Web Thymeleaf JPA MySQL, 下载的模版工程中就自动有这些依赖配置了 1.pom文件: &l...

weixin_30436891的博客 86

SpringBoot教程(三)集成JPA(druid)构建web服务

一、本地环境 操作系统:Mac OS X 10.13.2 编辑器:IntelliJ IDEA 2017 JDK版本:jdk 1.8 Maven版本:apache-maven-3.5.0 SpringBoot版本:SpringBoot 2.0 二、pom依赖文件 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project ...

weixin_34233856的博客 180
上一篇: 异常 -- Spring Boot_org.hibernate.AnnotationException: No identifier specified for entity
下一篇: Apache Camel - 19 - Lifecycle(Camel 中的生命周期)
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值