本文向你展示如何在Spring Boot的Web應用中使用Mysq數據庫,也充分展示Spring Boot的優(yōu)勢(盡可能少的代碼和配置)。數據訪(fǎng)問(wèn)層我們將使用Spring Data JPA和Hibernate(JPA的實(shí)現之一)。
在你的項目中增加如下依賴(lài)文件
<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>
在src/main/resources/application.properties中設置數據源和jpa配置。
spring.datasource.url = jdbc:mysql://localhost:3306/testspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driverClassName = com.mysql.jdbc.Driver# Specify the DBMSspring.jpa.database = MYSQL# Show or not log for each sql queryspring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)spring.jpa.hibernate.ddl-auto = update# Naming strategyspring.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配置。
上文中的數據庫配置,你需要換成你的數據庫的地址和用戶(hù)名密碼。
hibernate的ddl-auto=update配置表名,數據庫的表和列會(huì )自動(dòng)創(chuàng )建(根據Java實(shí)體的熟悉), 這里 可以看到更多得hibernate配置。
創(chuàng )建一個(gè)User實(shí)體,User包含三個(gè)屬性id,email和name。User實(shí)體和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
本例中UserDao非常簡(jiǎn)單,只需要繼承CrudRespositroy即可,CrudRespositroy已經(jīng)實(shí)現了save,delete,deleteAll,findOne和findAll.
(比較神奇的時(shí)這些方法其實(shí)CrudRespositroy中其實(shí)并沒(méi)有實(shí)現,并且通過(guò)對dao方法的命名還可以實(shí)現新的方法)
@Transactionalpublic interface UserDao extends CrudRepository<User, Long> { public User findByEmail(String email);}
新建一個(gè)查詢(xún)控制器UserController
@Controllerpublic class UserController { @RequestMapping("/get-by-email") @ResponseBody public String getByEmail(String email) { String userId; User user = userDao.findByEmail(email); if (user != null) { userId = String.valueOf(user.getId()); return "The user id is: " + userId; } return "user " + email + " is not exist."; } }
你可以使用瀏覽器訪(fǎng)問(wèn)url http://127.0.0.1:8080/get-by-email?email=qiyadeng@gmail.com
,可以獲得用戶(hù)的Id(你可以先在Mysql數據庫中新增一條記錄)。
聯(lián)系客服