工具:idea、mariadb数据库

创建一个项目 ( student )

........(使用idea创建一个springboot项目,这里我就不多说了)

Maven 中的依赖

<?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/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <!-- 父模块 -->
<!-- 包含了自动配置、日志....... -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <groupId>com.demo</groupId>
<artifactId>student</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>student</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies> <!-- springboot 自动配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <!-- 测试框架 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
</dependency> <!-- jap 只是一个规范 -->
<!-- SpringDataJpa 是 jap规范 再次抽象封装,底层还是使用 Hibernate的JPA技术实现 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.1.3.RELEASE</version>
</dependency> <!-- mariaDB 数据库 -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.3.0</version>
</dependency> </dependencies> <build>
<plugins>
<!-- maven 插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

创建 entity、dao、service、(service包还有一个impl包)、 controller 包

数据库

create table student(
stu_id int primary key auto_increment,
stu_number varchar(20) not null,
stu_name varchar(10) not null,
stu_age int not null,
stu_sex varchar(2) not null
)default charset=utf8; insert into student(stu_number,stu_name,stu_age,stu_sex) values
('A1001','欧可乐',19,'男'),
('B2001','啦啦啦',18,'女'),
('C3001','舞舞舞',18,'女'),
('D4001','飞飞飞',20,'男'),
('E5001','哒哒哒',19,'男');

配置application.yml 文件

yml格式

spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3306/test
username: oukele
password: oukele
jpa:
hibernate:
# 每次运行程序更新数据
ddl-auto: none
# 是否显示sql语句
show-sql: true
# 格式化sql语句
properties:
hibernate:
format_sql: true
# 设置数据库方言
database-platform: org.hibernate.dialect.MySQL5Dialect #mysql数据库
#spring:
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
# username:
# password:
# jpa:
# hibernate:
# ddl-auto: none
# show-sql: true
# properties:
# hibernate:
# format_sql: true
# database-platform: org.hibernate.dialect.MySQL5Dialect

properties格式

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/test
spring.datasource.username=oukele
spring.datasource.password=oukele spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

在entity包中新建一个Studen类

package com.demo.student.entity;

import javax.persistence.*;

/**
* 学生实体类
*
* @author OUKELE
* @create 2019-04-13 16:18
*/ //实体类的标志
@Entity
//对应的数据库表名
@Table(name = "student")
public class Student { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增长主键
private int stuId; // 数据库字段名 不区分大小写
// 数据库名列为stu_number Hibernate 会按照驼峰命名规范帮我们转换成 stuNumber
//@Column(name = "stu_number")
private String stuNumber; private String stuName;
private int stuAge;
private String stuSex; public int getStuId() {
return stuId;
} public void setStuId(int stuId) {
this.stuId = stuId;
} public String getStuNumber() {
return stuNumber;
} public void setStuNumber(String stuNumber) {
this.stuNumber = stuNumber;
} public String getStuName() {
return stuName;
} public void setStuName(String stuName) {
this.stuName = stuName;
} public int getStuAge() {
return stuAge;
} public void setStuAge(int stuAge) {
this.stuAge = stuAge;
} public String getStuSex() {
return stuSex;
} public void setStuSex(String stuSex) {
this.stuSex = stuSex;
} @Override
public String toString() {
return "Student{" +
"stuId=" + stuId +
", stuNumber='" + stuNumber + '\'' +
", stuName='" + stuName + '\'' +
", stuAge=" + stuAge +
", stuSex='" + stuSex + '\'' +
'}';
}
}

在dao包中新建一个StudentDao接口,并继承 CrudRepository 接口

CrudRepository 着简单crud方法,默认滴

package com.demo.student.dao;

import com.demo.student.entity.Student;
import org.springframework.data.repository.CrudRepository; public interface StudentDao extends CrudRepository<Student,Integer> { }

新建一个dao包,用于测试studentDao接口

package com.demo.student.dao;

import com.demo.student.entity.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.util.List; /**
* 测试接口
*
* @author OUKELE
* @create 2019-04-13 16:43
*/ @RunWith(SpringRunner.class)
@SpringBootTest
public class StudentDaoTest { @Autowired
private StudentDao studentDao; // 测试 查询 student 表中所有的数据
@Test
public void getList(){
List<Student> list = (List<Student>) studentDao.findAll();
System.out.println(list);
} // 测试 向 student 表 新增一条记录
//......... }

接口测试

在service包新建一个我们的接口(StudentService)

package com.demo.student.service;

import com.demo.student.entity.Student;

import java.util.List;

public interface StudentService {

    List<Student> listAll();

    int save(Student student);

    int delete(int stuId);

    int update(Student student);

}

在service包新建一个impl包 ,然后在impl包新建一个StudentServiceImpl类,并实现StudentSerice接口

package com.demo.student.service.Impl;

import com.demo.student.dao.StudentDao;
import com.demo.student.entity.Student;
import com.demo.student.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* @author OUKELE
* @create 2019-04-13 18:24
*/ @Service
public class StudentServiceImpl implements StudentService { @Autowired
private StudentDao studentDao; @Override
public List<Student> listAll() {
return (List<Student>) studentDao.findAll();
} @Override
public int save(Student student) {
return studentDao.save(student)!= null ? 1:0;
} @Override
public int delete(int stuId) {
int i = 0;
try {
studentDao.deleteById(stuId);
i = 1;
} catch (Exception e) {
e.printStackTrace();
i = 0;
}
return i;
} @Override
public int update(Student student) {
return studentDao.save(student) !=null ? 1:0;
}
}

在controller包新建一个StudentController类

package com.demo.student.controller;

import com.demo.student.entity.Student;
import com.demo.student.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.List; /**
* @author OUKELE
* @create 2019-04-14 17:24
*/ @RestController
@RequestMapping("/student")
public class StudentController { @Autowired
private StudentService studentService; @GetMapping("/list")
public Object list(){
List<Student> list = studentService.listAll();
if( list == null ) return "{\"msg\":\"无数据\"}";
return studentService.listAll();
} @PostMapping("/insert")
public String insert(Student student){
int save = studentService.save(student);
if (save>0)return "{\"msg\":\"新增成功\"}";
return "{\"msg\":\"新增失败\"}";
} @PostMapping("/update")
public String update(Student student){
int save = studentService.save(student);
if (save>0)return "{\"msg\":\"更新成功\"}";
return "{\"msg\":\"更新失败\"}";
} @GetMapping("/delete")
public String delete(@RequestParam int stuId){
int delete = studentService.delete(stuId);
if(delete >0)return "{\"msg\":\"删除成功\"}";
return "{\"msg\":\"删除失败\"}";
} }

启动项目,进行访问

演示项目源码:https://github.com/oukele/SpringBoot-Hibernate-demo1

SpringBoot + Maven + Hibernate ( 简单实现CRUD功能 )的更多相关文章

  1. SpringBoot整合Redis使用Restful风格实现CRUD功能

    前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...

  2. 使用springboot实现一个简单的restful crud——01、项目简介以及创建项目

    前言 之前一段时间学习了一些springboot的一些基础使用方法和敲了一些例子,是时候写一个简单的crud来将之前学的东西做一个整合了 -- 一个员工列表的增删改查. 使用 restful api ...

  3. 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)

    1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...

  4. springboot + mybatis 的项目,实现简单的CRUD

    以前都是用Springboot+jdbcTemplate实现CRUD 但是趋势是用mybatis,今天稍微修改,创建springboot + mybatis 的项目,实现简单的CRUD  上图是项目的 ...

  5. 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作

    这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...

  6. Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD

    源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...

  7. java框架之SpringBoot(6)-Restful风格的CRUD示例

    准备 环境 IDE:Idea SpringBoot版本:1.5.19 UI:BootStrap 4 模板引擎:thymeleaf 3 效果:Restful 风格 CRUD 功能的 Demo 依赖 &l ...

  8. 使用Struts2+Hibernate开发学生信息管理功能1

    第一章:Struts2与Hibernate整合 1.课程简介 2.界面原型演示 3.Struts2与Hibernate整合 4.创建实体类 5.生成实体映射文件 6.生成表结构 1.课程简介 Stru ...

  9. SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解

    SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...

随机推荐

  1. Windows下直接双击可执行的jar

    如果没有设置,那么就是用命令行: jar处在文件夹路径下打开命令行:java -jar xxx.jar 总的来说是有点不方便 首先默认打开jar程序得是相同jdk的java.exe 然后是一闪而过 下 ...

  2. ibox 的使用

    <div class="ibox float-e-margins"> <div class="ibox-title"> <h5&g ...

  3. MQ解决消息重发--做到幂等性

    一.MQ消息发送 1.发送端MQ-client(消息生产者:Producer)将消息发送给MQ-server: 2.MQ-server将消息落地: 3.MQ-server回ACK给MQ-client( ...

  4. TypeScript的类型

    ⒈TypeScript的类型 JavaScript语言的数据类型包括以下7种: 1.boolean(布尔),true || false 2.null,表明null值得特殊关键字,JavaScript是 ...

  5. RMI(远程方法调用)

    Remote Method Invocation  跨虚拟机间调用 使用 RMI 技术可轻松将 服务提供者(Service Provider)与 服务消费者(Service Consumer)进行分离 ...

  6. Ural 1298 Knight 题解

    目录 Ural 1298 Knight 题解 题意 题解 程序 Ural 1298 Knight 题解 题意 给定一个\(n\times n(1\le n\le8)\)的国际象棋棋盘和一个骑士(基本上 ...

  7. linux tcp listen函数的参数backlog

    1 listen函数(http://man7.org/linux/man-pages/man2/listen.2.html) int listen(int sockfd, int backlog); ...

  8. outlook邮箱备份

  9. Python脚本:Linux自动化执行Python脚本

    1.环境及其工具: ubuntu 16.04 python2.7(自带) pip2.7(安装) virtualenv(安装) crontab (自带) 2.pip2.7安装 (1)尝试使用 sudo ...

  10. myEclipse10安装以及破解

    这里需要下载一个破解补丁 https://pan.baidu.com/s/1ivE2yauZRDdDq8zBxpK06A 可以去网盘里下载, 下载后解压,会有如下文件 然后运行run.bat,会出现这 ...