• 简单才是美! SpringBoot+JPA


    SpringBoot 急速构建项目,真的是用了才知道,搭配JPA作为持久层,一简到底!
    下面记录项目的搭建,后续会添加NOSQL redis,搜索引擎elasticSearch,等等,什么不过时就加什么。

    开发工具idea、项目构建gradle、模板引擎thymeleaf

    项目构建

    1.【new】 -> 【product】 -> 选择Spring Initializr -> 【next】

    clipboard.png

    2.填写Group,Artifact,Type ->【next】

    clipboard.png

    3.导包

    1. 1.左边选择Web右边勾选Web
      2.左边选择SQL右边勾选JPA
      3.左边选择SQL右边勾选mysql
      4.左边选择Template Engines右边勾选Thymeleaf
      5.【next】->【finish】

    clipboard.png
    好了
    现在的项目结构

    clipboard.png

    BootjpaApplication 是项目的启动类
    resources/templates/ 文件夹是放页面的
    build.gradle 存放jar包坐标

    application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    

    @RestController

    配置完成,写个controller试试看

    @RestController
    public class HelloBootController {
    
        @RequestMapping("helloBoot")
        public String helloBoot(){
            return "Hello Boot-JPA";
        }
    }

    在BootjpaApplication文件上启动

    clipboard.png

    @RestController注解,代替@Controller+@@ResponseBody
    那么返回页面就直接用@Controller就好了

    现在JPA登场


    db

    注解和hibernate一样。

    @Entity
    public class User {
    
        private long id;
        private String name;
        private String passWord;
        private  String email;
    
        @Id
        @GeneratedValue
        public long getId() {
            return id;
        }
        。。。。。
      }
    

    现在,就是见证奇迹的时刻!

    dao

    dao层继承JpaRepository即可

    public interface UserRepository extends JpaRepository<User,Long> {
    }

    什么!这就完了??对,低调

    controller

    controller层,service层跳过。

    @Controller
    public class HelloBootController {
    
        @Autowired
        UserRepository userRepository;
    
        @RequestMapping("/toHello")
        public String toHello(ModelMap modelMap){
            userRepository.save(new User("Mshu","123456","zhuiqiu95@foxmail.com"));
            List<User> users = userRepository.findAll();
            modelMap.put("users",users);
            return "helloBoot";
        }
    }
    

    thymeleaf


    至于页面,默认是在resources/templates/下的html,试图解析器已经配置默认配置好的。

    前缀:resources/templates/
    后缀:html

    那我们就在resources/templates/下新建一个html页面
    注意<html xmlns:th="http://www.thymeleaf.org " lang="en">引入thymeleaf
    用到了thymeleaf语法遍历。

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org"  lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <table >
        <tr th:each="user,userState : ${users}">
            <td style="border: 1px solid seagreen" th:text="${user.name}"></td>
            <td style="border: 1px solid seagreen" th:text="${user.passWord}"></td>
            <td style="border: 1px solid seagreen" th:text="${user.email}"></td>
        </tr>
    </table>
    </body>
    </html>

    启动,输入地址,回车!
    clipboard.png

    精彩回顾

    刚刚dao层明明只写了一个接口没有写任何方法,怎么就能调用save(),findAll()呢,
    对JPA默认了许多基础增删改查方法,直接调用即可。
    怎么写除了默认给出的方法以外怎么写呢,

    public interface UserRepository extends JpaRepository<User,Long> {
        User findByName(String name);
    }

    调用的话直接

    User user = userRepository.findByName("Mshu");
    

    那么怎么做的映射的,它怎么知道我的参数name对应表里的name,原来名字一样就可以映射,好像很有道理
    没错就那么简单,这种写法太hibernate了。

    本文转载于猿2048:简单才是美! SpringBoot+JPA

  • 相关阅读:
    如何用ASP.NET加密Cookie数据过程分析
    PHP监控linux服务器负载情况分析解决方案
    我发现了博客的一个小问题
    人生总是有太多的失望
    小公司根据实据情况部署实施Linux集群网站
    刚刚收到光棍短信祝福了!
    我对你的期望有点过了
    PHP在接下来的几年内将是主主流的
    不付出一定不会有收获!
    关于创建RootDesigner的文章
  • 原文地址:https://www.cnblogs.com/10manongit/p/12814371.html
Copyright © 2020-2023  润新知