工具:idea、mariadb数据库

创建一个项目 ( student )

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

Maven 中的依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <!-- 父模块 -->
  7. <!-- 包含了自动配置、日志....... -->
  8. <parent>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>2.1.4.RELEASE</version>
  12. <relativePath/> <!-- lookup parent from repository -->
  13. </parent>
  14.  
  15. <groupId>com.demo</groupId>
  16. <artifactId>student</artifactId>
  17. <version>0.0.1-SNAPSHOT</version>
  18. <name>student</name>
  19. <description>Demo project for Spring Boot</description>
  20.  
  21. <properties>
  22. <java.version>1.8</java.version>
  23. </properties>
  24.  
  25. <dependencies>
  26.  
  27. <!-- springboot 自动配置 -->
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter</artifactId>
  31. </dependency>
  32.  
  33. <!-- 测试框架 -->
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <scope>test</scope>
  38. </dependency>
  39.  
  40. <!-- web -->
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-web</artifactId>
  44. <version>2.1.3.RELEASE</version>
  45. </dependency>
  46.  
  47. <!-- jap 只是一个规范 -->
  48. <!-- SpringDataJpa 是 jap规范 再次抽象封装,底层还是使用 Hibernate的JPA技术实现 -->
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-data-jpa</artifactId>
  52. <version>2.1.3.RELEASE</version>
  53. </dependency>
  54.  
  55. <!-- mariaDB 数据库 -->
  56. <dependency>
  57. <groupId>org.mariadb.jdbc</groupId>
  58. <artifactId>mariadb-java-client</artifactId>
  59. <version>2.3.0</version>
  60. </dependency>
  61.  
  62. </dependencies>
  63.  
  64. <build>
  65. <plugins>
  66. <!-- maven 插件 -->
  67. <plugin>
  68. <groupId>org.springframework.boot</groupId>
  69. <artifactId>spring-boot-maven-plugin</artifactId>
  70. </plugin>
  71. </plugins>
  72. </build>
  73.  
  74. </project>

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

数据库

  1. create table student(
  2. stu_id int primary key auto_increment,
  3. stu_number varchar(20) not null,
  4. stu_name varchar(10) not null,
  5. stu_age int not null,
  6. stu_sex varchar(2) not null
  7. )default charset=utf8;
  8.  
  9. insert into student(stu_number,stu_name,stu_age,stu_sex) values
  10. ('A1001','欧可乐',19,'男'),
  11. ('B2001','啦啦啦',18,'女'),
  12. ('C3001','舞舞舞',18,'女'),
  13. ('D4001','飞飞飞',20,'男'),
  14. ('E5001','哒哒哒',19,'男');

配置application.yml 文件

yml格式

  1. spring:
  2. datasource:
  3. driver-class-name: org.mariadb.jdbc.Driver
  4. url: jdbc:mariadb://localhost:3306/test
  5. username: oukele
  6. password: oukele
  7. jpa:
  8. hibernate:
  9. # 每次运行程序更新数据
  10. ddl-auto: none
  11. # 是否显示sql语句
  12. show-sql: true
  13. # 格式化sql语句
  14. properties:
  15. hibernate:
  16. format_sql: true
  17. # 设置数据库方言
  18. database-platform: org.hibernate.dialect.MySQL5Dialect
  19.  
  20. #mysql数据库
  21. #spring:
  22. # datasource:
  23. # driver-class-name: com.mysql.cj.jdbc.Driver
  24. # url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
  25. # username:
  26. # password:
  27. # jpa:
  28. # hibernate:
  29. # ddl-auto: none
  30. # show-sql: true
  31. # properties:
  32. # hibernate:
  33. # format_sql: true
  34. # database-platform: org.hibernate.dialect.MySQL5Dialect

properties格式

  1. spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
  2. spring.datasource.url=jdbc:mariadb://localhost:3306/test
  3. spring.datasource.username=oukele
  4. spring.datasource.password=oukele
  5.  
  6. spring.jpa.hibernate.ddl-auto=none
  7. spring.jpa.show-sql=true
  8. spring.jpa.properties.hibernate.format_sql=true
  9. spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

在entity包中新建一个Studen类

  1. package com.demo.student.entity;
  2.  
  3. import javax.persistence.*;
  4.  
  5. /**
  6. * 学生实体类
  7. *
  8. * @author OUKELE
  9. * @create 2019-04-13 16:18
  10. */
  11.  
  12. //实体类的标志
  13. @Entity
  14. //对应的数据库表名
  15. @Table(name = "student")
  16. public class Student {
  17.  
  18. @Id
  19. @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长主键
  20. private int stuId;
  21.  
  22. // 数据库字段名 不区分大小写
  23. // 数据库名列为stu_number Hibernate 会按照驼峰命名规范帮我们转换成 stuNumber
  24. //@Column(name = "stu_number")
  25. private String stuNumber;
  26.  
  27. private String stuName;
  28. private int stuAge;
  29. private String stuSex;
  30.  
  31. public int getStuId() {
  32. return stuId;
  33. }
  34.  
  35. public void setStuId(int stuId) {
  36. this.stuId = stuId;
  37. }
  38.  
  39. public String getStuNumber() {
  40. return stuNumber;
  41. }
  42.  
  43. public void setStuNumber(String stuNumber) {
  44. this.stuNumber = stuNumber;
  45. }
  46.  
  47. public String getStuName() {
  48. return stuName;
  49. }
  50.  
  51. public void setStuName(String stuName) {
  52. this.stuName = stuName;
  53. }
  54.  
  55. public int getStuAge() {
  56. return stuAge;
  57. }
  58.  
  59. public void setStuAge(int stuAge) {
  60. this.stuAge = stuAge;
  61. }
  62.  
  63. public String getStuSex() {
  64. return stuSex;
  65. }
  66.  
  67. public void setStuSex(String stuSex) {
  68. this.stuSex = stuSex;
  69. }
  70.  
  71. @Override
  72. public String toString() {
  73. return "Student{" +
  74. "stuId=" + stuId +
  75. ", stuNumber='" + stuNumber + '\'' +
  76. ", stuName='" + stuName + '\'' +
  77. ", stuAge=" + stuAge +
  78. ", stuSex='" + stuSex + '\'' +
  79. '}';
  80. }
  81. }

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

CrudRepository 着简单crud方法,默认滴

  1. package com.demo.student.dao;
  2.  
  3. import com.demo.student.entity.Student;
  4. import org.springframework.data.repository.CrudRepository;
  5.  
  6. public interface StudentDao extends CrudRepository<Student,Integer> {
  7.  
  8. }

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

  1. package com.demo.student.dao;
  2.  
  3. import com.demo.student.entity.Student;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9.  
  10. import java.util.List;
  11.  
  12. /**
  13. * 测试接口
  14. *
  15. * @author OUKELE
  16. * @create 2019-04-13 16:43
  17. */
  18.  
  19. @RunWith(SpringRunner.class)
  20. @SpringBootTest
  21. public class StudentDaoTest {
  22.  
  23. @Autowired
  24. private StudentDao studentDao;
  25.  
  26. // 测试 查询 student 表中所有的数据
  27. @Test
  28. public void getList(){
  29. List<Student> list = (List<Student>) studentDao.findAll();
  30. System.out.println(list);
  31. }
  32.  
  33. // 测试 向 student 表 新增一条记录
  34. //.........
  35.  
  36. }

接口测试

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

  1. package com.demo.student.service;
  2.  
  3. import com.demo.student.entity.Student;
  4.  
  5. import java.util.List;
  6.  
  7. public interface StudentService {
  8.  
  9. List<Student> listAll();
  10.  
  11. int save(Student student);
  12.  
  13. int delete(int stuId);
  14.  
  15. int update(Student student);
  16.  
  17. }

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

  1. package com.demo.student.service.Impl;
  2.  
  3. import com.demo.student.dao.StudentDao;
  4. import com.demo.student.entity.Student;
  5. import com.demo.student.service.StudentService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8.  
  9. import java.util.List;
  10.  
  11. /**
  12. * @author OUKELE
  13. * @create 2019-04-13 18:24
  14. */
  15.  
  16. @Service
  17. public class StudentServiceImpl implements StudentService {
  18.  
  19. @Autowired
  20. private StudentDao studentDao;
  21.  
  22. @Override
  23. public List<Student> listAll() {
  24. return (List<Student>) studentDao.findAll();
  25. }
  26.  
  27. @Override
  28. public int save(Student student) {
  29. return studentDao.save(student)!= null ? 1:0;
  30. }
  31.  
  32. @Override
  33. public int delete(int stuId) {
  34. int i = 0;
  35. try {
  36. studentDao.deleteById(stuId);
  37. i = 1;
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. i = 0;
  41. }
  42. return i;
  43. }
  44.  
  45. @Override
  46. public int update(Student student) {
  47. return studentDao.save(student) !=null ? 1:0;
  48. }
  49. }

在controller包新建一个StudentController类

  1. package com.demo.student.controller;
  2.  
  3. import com.demo.student.entity.Student;
  4. import com.demo.student.service.StudentService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7.  
  8. import java.util.List;
  9.  
  10. /**
  11. * @author OUKELE
  12. * @create 2019-04-14 17:24
  13. */
  14.  
  15. @RestController
  16. @RequestMapping("/student")
  17. public class StudentController {
  18.  
  19. @Autowired
  20. private StudentService studentService;
  21.  
  22. @GetMapping("/list")
  23. public Object list(){
  24. List<Student> list = studentService.listAll();
  25. if( list == null ) return "{\"msg\":\"无数据\"}";
  26. return studentService.listAll();
  27. }
  28.  
  29. @PostMapping("/insert")
  30. public String insert(Student student){
  31. int save = studentService.save(student);
  32. if (save>0)return "{\"msg\":\"新增成功\"}";
  33. return "{\"msg\":\"新增失败\"}";
  34. }
  35.  
  36. @PostMapping("/update")
  37. public String update(Student student){
  38. int save = studentService.save(student);
  39. if (save>0)return "{\"msg\":\"更新成功\"}";
  40. return "{\"msg\":\"更新失败\"}";
  41. }
  42.  
  43. @GetMapping("/delete")
  44. public String delete(@RequestParam int stuId){
  45. int delete = studentService.delete(stuId);
  46. if(delete >0)return "{\"msg\":\"删除成功\"}";
  47. return "{\"msg\":\"删除失败\"}";
  48. }
  49.  
  50. }

启动项目,进行访问

演示项目源码: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. POJ 3229:The Best Travel Design

    Description Dou Nai ), and the end of the travel route hours on traveling every day. Input There are ...

  2. cent7配置阿里yum源

    阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/CentOS系统更换软件安装源第一步:备份你的原镜像文件,以免出错后可以恢复.mv /etc/yum.repos.d ...

  3. [转帖]三款Nehalem至强5500塔式服务器横评对决(4)

    三款Nehalem至强5500塔式服务器横评对决(4) http://tech.sina.com.cn/b/2009-12-14/05051172233_4.shtml 可以看到两路服务器的设置 基本 ...

  4. HanLP-命名实体识别总结

    人名识别 在HanLP中,基于角色标注识别了中国人名.首先系统利用隐马尔可夫模型标注每个词语的角色,之后利用最大模式匹配法对角色序列进行匹配,匹配上模式的即为人名.理论指导文章为:<基于角色标注 ...

  5. Python 解leetcode:728. Self Dividing Numbers

    思路:循环最小值到最大值,对于每一个值,判断每一位是否能被该值整除即可,思路比较简单. class Solution(object): def selfDividingNumbers(self, le ...

  6. log4j一些配置用法

    Log4j基本用法----日志级别 基本使用方法: Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN.INFO ...

  7. 虚拟机(VM)安装openwrt-koolshare软路由

    ⒈创建虚拟机 **软路由选择Windows操作系统,因为我们需要在PE环境中进行软路由的写入,固件类型选择BIOS,网络类型选择使用仅主机模式网络,虚拟磁盘类型选择IDE[一定要选择IDE模式],SC ...

  8. Pangu and Stones(HihoCoder-1636)(17北京OL)【区间DP】

    题意:有n堆石头,盘古每次可以选择连续的x堆合并,所需时间为x堆石头的数量之和,x∈[l,r],现在要求,能否将石头合并成一堆,如果能,最短时间是多少. 思路:(参考了ACM算法日常)DP[i][j] ...

  9. opencv实现人脸识别(三) 训练图片模块

    现在我们已经拍好了需要训练的图片,接下来就是进行训练 流程图: 我们在这里用到了numpy库,NumPy是一个功能强大的Python库,主要用于对多维数组执行计算. 使用numpy的目的是减少pyth ...

  10. Apache开启.htaccess 支持

    (1) <Directory "${SRVROOT}/htdocs"> # # Possible values for the Options directive ar ...