知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
<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> <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1212</version> </dependency>
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
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); }
@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)); }); }
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)); }); } }