首页 > 代码库 > Spring Boot:在Spring Boot中使用Mysql和JPA
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数据库中新增一条记录)。
Spring Boot:在Spring Boot中使用Mysql和JPA