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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中使用PostgreSQL数据库并结合JPA进行开发,可以按照以下步骤进行: 1. 添加依赖 在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源 在`application.properties`文件中添加以下配置: ```properties spring.datasource.url=jdbc:postgresql://localhost:5432/mydb spring.datasource.username=myuser spring.datasource.password=mypassword spring.datasource.driver-class-name=org.postgresql.Driver ``` 3. 创建实体类 创建一个实体类,用于映射数据库表的字段,例如: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // getters and setters } ``` 4. 创建JpaRepository 创建一个继承自`JpaRepository`的接口,用于进行数据库操作,例如: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 5. 编写业务逻辑代码 在业务逻辑代码中注入`UserRepository`,并使用其提供的方法进行数据库操作,例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getAllUsers() { return userRepository.findAll(); } public void saveUser(User user) { userRepository.save(user); } // other methods } ``` 至此,Spring Boot整合PostgreSQL并结合JPA进行开发的基本步骤就介绍完了。当然,在实际开发中,还有很多需要注意的地方,例如事务管理、异常处理等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值