zoukankan      html  css  js  c++  java
  • Spring Boot:在Spring Boot中使用Mysql和JPA

    本文向你展示如何在Spring Boot的Web应用中使用Mysq数据库,也充分展示Spring Boot的优势(尽可能少的代码和配置)。数据访问层我们将使用Spring Data JPA和Hibernate(JPA的实现之一)。

    1.Maven pom.xml文件

    在你的项目中增加如下依赖文件

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>
    </dependencies>

    2.属性配置文件application.properties

    在src/main/resources/application.properties中设置数据源和jpa配置。

    spring.datasource.url = jdbc:mysql://localhost:3306/test
    spring.datasource.username = root
    spring.datasource.password = root
    spring.datasource.driverClassName = com.mysql.jdbc.Driver
    # Specify the DBMS
    spring.jpa.database = MYSQL
    # Show or not log for each sql query
    spring.jpa.show-sql = true
    # Hibernate ddl auto (create, create-drop, update)
    spring.jpa.hibernate.ddl-auto = update
    # Naming strategy
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

    # stripped before adding them to the entity manager)
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

    全部的配置都在如上的文件中了,不需要另外的XML配置和Java配置。

    上文中的数据库配置,你需要换成你的数据库的地址和用户名密码。

    hibernate的ddl-auto=update配置表名,数据库的表和列会自动创建(根据Java实体的熟悉), 这里 可以看到更多得hibernate配置。

    3.User实体

    创建一个User实体,User包含三个属性id,email和name。User实体和Mysql数据库的users表相对应。

    @Entity
    @Table(name = "users")
    public class User {
    // ==============
    // PRIVATE FIELDS
    // ==============
    // An autogenerated id (unique for each user in the db)
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    // The user email
    @NotNull
    private String email;
    // The user name
    @NotNull
    private String name;
    // ==============
    // PUBLIC METHODS
    // ==============
    public User() { }
    public User(long id) {
    this.id = id;
    }
    // Getter and setter methods
    // ...
    } // class User

    4.User实体的数据访问层UserDao

    本例中UserDao非常简单,只需要继承CrudRespositroy即可,CrudRespositroy已经实现了save,delete,deleteAll,findOne和findAll.

    (比较神奇的时这些方法其实CrudRespositroy中其实并没有实现,并且通过对dao方法的命名还可以实现新的方法)

    @Transactional
    public interface UserDao extends CrudRepository<User, Long> {
    public User findByEmail(String email);
    }

    5.测试的控制器UserController

    新建一个查询控制器UserController

     1 @Controller
     2 public class UserController {
     3     
     4     
     5       @Autowired
     6       UserDao userDao2;
     7       
     8       
     9     @RequestMapping("/get-by-email")
    10     @ResponseBody
    11     public String getByEmail(String email) {
    12       String userId;
    13       User user = userDao2.findByEmail(email);
    14       if (user != null) {
    15         userId = String.valueOf(user.getId());
    16         return "The user id is: " + userId;
    17       }
    18       return "user " + email + " is not exist.";
    19     }
    20   }

    你可以使用浏览器访问url http://127.0.0.1:8080/get-by-email?email=qiyadeng@gmail.com

    ,可以获得用户的Id(你可以先在Mysql数据库中新增一条记录)。

  • 相关阅读:
    鸣人和佐助(OJ 6044)
    Papa的坦克(原BZOJ 1603 打谷机)
    linux基础学习之用户和用户组
    出现log4j:WARN No appenders could be found for logger 解决方法
    myeclipse当中,如何导入或者导出项目
    linux 基础学习之目录与文件处理命令
    linux 基础学习之权限管理命令
    hadoop环境搭建之伪分布集群环境搭建(单节点)
    linux基础学习之各目录的作用
    linux 基础学习之 磁盘,分区,MBR与GPT
  • 原文地址:https://www.cnblogs.com/douyamv/p/6607128.html
Copyright © 2011-2022 走看看