springboot postgresql druid连接池和jpa,jdbctemplate执行sql查询

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