zoukankan      html  css  js  c++  java
  • 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编辑的测试例,暂时不清楚如何上传

  • 相关阅读:
    Hadoop集群(三) Hbase搭建
    Hadoop集群(二) HDFS搭建
    Hadoop集群(一) Zookeeper搭建
    Redis Cluster 添加/删除 完整折腾步骤
    Redis Cluster在线迁移
    Hadoop分布式HA的安装部署
    Describe the difference between repeater, bridge and router.
    what is the “handover” and "soft handover" in mobile communication system?
    The main roles of LTE eNodeB.
    The architecture of LTE network.
  • 原文地址:https://www.cnblogs.com/gc65/p/10170638.html
Copyright © 2011-2022 走看看