• 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编辑的测试例,暂时不清楚如何上传

  • 相关阅读:
    Vuejs模板绑定
    Vuejs基本使用
    Vuejs简介
    echarts 使用配置模式(含事件)
    JS 对象(Object)和字符串(String)互转
    HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用
    highcharts点击事件系列
    servlet填充Response时,数据转换之content-type
    leetcode-70. Climbing Stairs
    deep copy and shallow copy
  • 原文地址:https://www.cnblogs.com/gc65/p/10170638.html
Copyright © 2020-2023  润新知