详解在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
@controller public 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."; } }
你可以使用浏览器访问url http://127.0.0.1:8080/get-by-email?email=qiyadeng@gmail.com,可以获得用户的id(你可以先在mysql数据库中新增一条记录)。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读