之前我们已经能运行输出hello world了,但是只是web模块而且,其他模块还没有运用上,而且,还没有连接数据库呢,所以这里将讲整体的运用。
首先:
在web模块中的pom.xml引入mysql的包。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
接着,在resources中,新增properties配置文件:
其中:application.properties的代码:
#目的是根据开发环境的不同,调用不同的配置文件 spring.profiles.active=dev #spring.profiles.active=test #spring.profiles.active=production spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=Asia/Chongqing
application-dev.properties的配置:
#本地运行时候的端口号,打包发布不一定,根据服务器配置而定。 server.port=9095 #连接数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=none #validate #JPA Configuration: spring.jpa.database=MYSQL # Show or not log for each sql query spring.jpa.show-sql=false spring.jpa.generate-ddl=true spring.jpa.open-in-view=false # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto=none #spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy #spring.jpa.database=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.mvc.view.prefix= /page/ spring.mvc.view.suffix= .html
这样,数据库的链接配置基本完成。
接下来,我们利用JPA实现数据库和对象的映射关系。
在model模块、dao模块,pom.xml中引入JPA依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
同时,在model模块中创建目录com.demo.model目录,在dao模块中创建目录 如图:
然后,根据数据库的表,建立模型,比如数据库中有个user表,有id和name两个字段,那么我们在com.demo.model下面建立实体类:User
代码如下:
package com.demo.model; import javax.persistence.*; //声明实体类 @Entity //表名 @Table(name="user") public class User { //字段 @Id @Column(name="id") @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; //字段 @Column(name="name") private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
然后,在dao模块实现数据读取,先在com.demo.repository中创建UserRepository接口,利用jpa的自带方法实现数据读取,具体代码:
package com.demo.repository; import com.demo.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository, JpaSpecificationExecutor,PagingAndSortingRepository { public User getById(Integer id); }
接下来,就是业务层(service)的事情了。
如图所示,创建相关目录:
其中,IUserService的代码:
package com.crd.op.service; import com.crd.op.model.User; public interface IUserService { public User getUser(Integer id); }
UserService的代码:
package com.crd.op.service.impl; import com.crd.op.model.User; import com.crd.op.repository.UserRepository; import com.crd.op.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService implements IUserService { //获取dao层对应的repository @Autowired private UserRepository userRepository; //实现IUserService的接口 @Override public User getUser(Integer id) { return userRepository.getById(id); } }
至此,业务层的实现也完成了。
最后,我们用controller来调用service层的接口。
我们继续在之前的IndexController中,加入:
//业务层接口 @Autowired private IUserService iUserService; //方法 @RequestMapping(value = "/userInfo") @ResponseBody public User UserInfo(Integer id){ return iUserService.getUser(id); }
这样,全部的代码流程都走完了。。
我们运行代码,访问:localhost:9095/userInfo?id=1,即可查出id为1的用户信息。