1.maven依赖配置(pom.xml)
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter</artifactId> 4 </dependency> 5 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-web</artifactId> 9 </dependency> 10 <dependency> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-jdbc</artifactId> 13 </dependency> 14 <dependency> 15 <groupId>com.alibaba</groupId> 16 <artifactId>druid</artifactId> 17 <version>1.0.20</version> 18 </dependency> 19 <dependency> 20 <groupId>org.postgresql</groupId> 21 <artifactId>postgresql</artifactId> 22 <scope>runtime</scope> 23 </dependency> 24 <dependency> 25 <groupId>org.springframework.boot</groupId> 26 <artifactId>spring-boot-starter-data-jpa</artifactId> 27 </dependency>
2.数据源配置(application.properties)
spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=true #druid database connect pool #config database connect info spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/druiddb spring.datasource.username=postgres spring.datasource.password=postgres #config druid spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=10000 spring.datasource.timeBetweenEvictionRunMillis=60000 spring.datasource.minEvictableIdleTimeMillis=10000 spring.datasource.validationQuery=SELECT 'x' spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=true spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=10 spring.datasource.filters=stat
3.druid管理器配置
工程结构如下

1 @Configuration
2 public class DruidConfiguration {
3 private static Logger log = LoggerFactory.getLogger(DruidConfiguration.class);
4 @Bean
5 @ConfigurationProperties(prefix="spring.datasource")
6 public DataSource druid() {
7 return new DruidDataSource();
8 }
9 /**
10 * 配置druid管理页面的访问控制
11 * 访问网址: http://127.0.0.1:8080/druid
12 * @return
13 */
14 @Bean
15 public ServletRegistrationBean<Servlet> druidServlet() {
16 log.info("init Druid Servlet Configuration");
17 ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<>();
18 servletRegistrationBean.setServlet(new StatViewServlet()); //配置一个拦截器
19 servletRegistrationBean.addUrlMappings("/druid/*"); //指定拦截器只拦截druid管理页面的请求
20 HashMap<String, String> initParam = new HashMap<String,String>();
21 initParam.put("loginUsername", "admin"); //登录druid管理页面的用户名
22 initParam.put("loginPassword", "admin"); //登录druid管理页面的密码
23 initParam.put("resetEnable", "true"); //是否允许重置druid的统计信息
24 initParam.put("allow", ""); //ip白名单,如果没有设置或为空,则表示允许所有访问
25 servletRegistrationBean.setInitParameters(initParam);
26 return servletRegistrationBean;
27 }
28
29 @Bean
30 public FilterRegistrationBean<WebStatFilter> filterRegistrationBean() {
31 FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<WebStatFilter>();
32 filterRegistrationBean.setFilter(new WebStatFilter());
33 filterRegistrationBean.addUrlPatterns("/*");
34 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
35 return filterRegistrationBean;
36 }
37
38 }
4.实体类
1 //建表语句
2 //create table USERS(id INT,age int,name VARCHAR, PRIMARY KEY(id));
3 /**
4 * @DESC users表的实体类
5 * @author guchuang
6 */
7 @Entity
8 @Table(name="users")
9 public class User implements Serializable {
10
11 private static final long serialVersionUID = 1L;
12 @Id
13 private int id;
14 private int age;
15 private String name;
16
17 public User() {
18 }
19 public User(int id, int age, String name) {
20 this.id = id;
21 this.age = age;
22 this.name = name;
23 }
24 public int getId() {
25 return id;
26 }
27 public void setId(int id) {
28 this.id = id;
29 }
30 public int getAge() {
31 return age;
32 }
33 public void setAge(int age) {
34 this.age = age;
35 }
36 public String getName() {
37 return name;
38 }
39 public void setName(String name) {
40 this.name = name;
41 }
42 @Override
43 public String toString() {
44 return "User [id=" + id + ", age=" + age + ", name=" + name + "]";
45 }
46 }
1 /**
2 * @DESC 实现jpa接口,拥有jpa提供的默认crud操作,无需自己写实现代码(除非要扩展功能)
3 * @author guchuang
4 *
5 */
6 public interface UserRepository extends JpaRepository<User,Integer> {
7
8 }
5.jdbcTemplate实现数据库读写
1 @RestController
2 @RequestMapping("/jpa")
3 public class JpaUserController {
4 @Autowired
5 private UserRepository userRepository;
6
7 @GetMapping(value="/user")
8 public List<User> getUser() throws SQLException {
9 List<User> users = userRepository.findAll();
10 return users;
11 }
12 @GetMapping(value="/user/{id}")
13 public User getUser(@PathVariable(value="id") int id) throws SQLException {
14 Optional<User> user = userRepository.findById(id);
15 return user.get();
16 }
17 @PostMapping(value = "/user")
18 public String saveUser(@RequestBody User user){
19 userRepository.save(user);
20 return "success to add user";
21 }
22 @PutMapping(value = "/user")
23 public String updateUser(@RequestBody User user){
24 userRepository.deleteById(user.getId());
25 userRepository.save(user);
26 return "success to update user";
27 }
28 @DeleteMapping(value = "/user/{id}")
29 public String deleteUser(@PathVariable(value="id") int id){
30 userRepository.deleteById(id);
31 return "success to delete user";
32 }
33 }
6.jpa实现数据库读写
1 @RestController
2 @RequestMapping("/jpa")
3 public class JpaUserController {
4 @Autowired
5 private UserRepository userRepository;
6
7 @GetMapping(value="/user")
8 public List<User> getUser() throws SQLException {
9 List<User> users = userRepository.findAll();
10 return users;
11 }
12 @GetMapping(value="/user/{id}")
13 public User getUser(@PathVariable(value="id") int id) throws SQLException {
14 Optional<User> user = userRepository.findById(id);
15 return user.get();
16 }
17 @PostMapping(value = "/user")
18 public String saveUser(@RequestBody User user){
19 userRepository.save(user);
20 return "success to add user";
21 }
22 @PutMapping(value = "/user")
23 public String updateUser(@RequestBody User user){
24 userRepository.deleteById(user.getId());
25 userRepository.save(user);
26 return "success to update user";
27 }
28 @DeleteMapping(value = "/user/{id}")
29 public String deleteUser(@PathVariable(value="id") int id){
30 userRepository.deleteById(id);
31 return "success to delete user";
32 }
33 }
7.druid管理页面


8.测试例(postman)
备注:test_ip_port为postman中的变量,实际替换为ip:port即可


9.附件
postman编辑的测试例,暂时不清楚如何上传
来源:https://www.cnblogs.com/gc65/p/10170638.html