Spring boot with PostgreSQL - 知乎 - jqa 非 mybatis

Spring boot with PostgreSQL

节选自《Netkiller Spring Cloud 手札》

多维度架构 - 知乎​www.zhihu.com/club/1241768772601950208

Maven pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- org.postgresql " postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4.1212</version>
</dependency>        

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/your-database
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.generate-ddl=true

Application

package cn.netkiller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@EnableMongoRepositories
@EnableJpaRepositories
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Model Class

package cn.netkiller.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "customer")
public class Customer implements Serializable {

    private static final long serialVersionUID = -3009077722242246666L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "firstname")
    private String firstName;

    @Column(name = "lastname")
    private String lastName;

    protected Customer() {
    }

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return String.format("Customer[id=%d, firstName='%s', lastName='%s']", id, firstName, lastName);
    }
}

CrudRepository

package cn.netkiller.repository;

import java.util.List;

import org.springframework.data.repository.CrudRepository;

import cn.netkiller.model.Customer;

public interface CustomerRepository extends CrudRepository<Customer, Long>{
    List<Customer> findByFirstName(String firstName);
    List<Customer> findByLastName(String lastName);
}        

JdbcTemplate

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/jdbc")
    public @ResponseBody String dailyStats(@RequestParam Integer id) {
        String query = "SELECT id, firstname, lastname from customer where id = " + id;

        return jdbcTemplate.queryForObject(query, (resultSet, i) -> {
            System.out.println(resultSet.getLong(1)+","+ resultSet.getString(2)+","+ resultSet.getString(3));
            return (resultSet.getLong(1)+","+ resultSet.getString(2)+","+ resultSet.getString(3));
        });
    }            

Controller

package cn.netkiller.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.netkiller.model.Customer;
import cn.netkiller.repository.CustomerRepository;

@Controller
@RequestMapping("/test/pgsql")
public class TestPostgreSQLController {

    @Autowired
    private CustomerRepository customerRepository;

    @RequestMapping("/save")
    public @ResponseBody String process() {
        customerRepository.save(new Customer("Neo", "Chan"));
        customerRepository.save(new Customer("Luke", "Liu"));
        customerRepository.save(new Customer("Ran", "Guo"));
        customerRepository.save(new Customer("Joey", "Chen"));
        customerRepository.save(new Customer("Larry", "Huang"));
        return "Done";
    }

    @RequestMapping("/findall")
    public @ResponseBody String findAll() {
        String result = "<html>";

        for (Customer cust : customerRepository.findAll()) {
            result += "<div>" + cust.toString() + "</div>";
        }

        return result + "</html>";
    }

    @RequestMapping("/findbyid")
    public @ResponseBody String findById(@RequestParam("id") long id) {
        String result = "";
        result = customerRepository.findOne(id).toString();
        return result;
    }

    @RequestMapping("/findbylastname")
    public @ResponseBody String fetchDataByLastName(@RequestParam("lastname") String lastName) {
        String result = "<html>";

        for (Customer cust : customerRepository.findByLastName(lastName)) {
            result += "<div>" + cust.toString() + "</div>";
        }

        return result + "</html>";
    }

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/jdbc")
    public @ResponseBody String dailyStats(@RequestParam Integer id) {
        String query = "SELECT id, firstname, lastname from customer where id = " + id;

        return jdbcTemplate.queryForObject(query, (resultSet, i) -> {
            System.out.println(resultSet.getLong(1)+","+ resultSet.getString(2)+","+ resultSet.getString(3));
            return (resultSet.getLong(1)+","+ resultSet.getString(2)+","+ resultSet.getString(3));
        });
    }
}        

Test

curl http://127.0.0.1:7000/test/pgsql/save
curl http://127.0.0.1:7000/test/pgsql/findall
curl http://127.0.0.1:7000/test/pgsql/findbyid?id=1
curl http://127.0.0.1:7000/test/pgsql/jdbc?id=1

netkiller:Spring boot with Oracle2 赞同 · 0 评论文章

netkiller:Spring boot with MySQL3 赞同 · 0 评论文章

netkiller:Spring boot with MongoDB2 赞同 · 0 评论文章

netkiller:Spring boot with Redis2 赞同 · 0 评论文章

netkiller:Spring boot with Jetty3 赞同 · 0 评论文章

netkiller:Spring boot with Session2 赞同 · 0 评论文章

netkiller:Spring boot with Properties7 赞同 · 0 评论文章

netkiller:String boot with RestTemplate2 赞同 · 0 评论文章

netkiller:Spring boot with HTTP2 SSL3 赞同 · 0 评论文章

netkiller:Spring boot with Logging8 赞同 · 0 评论文章


原网址: 访问
创建于: 2021-12-08 13:03:40
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论