Spring boot with MySQL 实例参考
原创 2016-08-08 景峯 Netkiller
节选择《Netkiller Java 手札》· Spring 框架
9.7. Spring boot with MySQL
9.7.1. Maven
pom.xml
4.0.0 netkiller.cn api.netkiller.cn 0.0.1-SNAPSHOT jar api.netkiller.cn http://maven.apache.org UTF-8 org.springframework.boot spring-boot-starter-parent 1.3.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-redis org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-amqp org.springframework.boot spring-boot-devtools org.springframework.boot spring-boot-starter-test test org.springframework.data spring-data-mongodb mysql mysql-connector-java com.google.code.gson gson compile junit junit test src org.springframework.boot spring-boot-maven-plugin maven-compiler-plugin 3.3 maven-war-plugin 2.6 WebContent false
9.7.2. Resource
src/main/resources/application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://192.168.6.1:3306/testspring.datasource.username=rootspring.datasource.password=passwordspring.jpa.database=MYSQLspring.jpa.show-sql=truespring.jpa.hibernate.ddl-auto=update#spring.jpa.hibernate.ddl-auto=create-drop
9.7.3. Application
package api;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import api.ApplicationConfiguration;@SpringBootApplication@EnableConfigurationProperties(ApplicationConfiguration.class)@EnableAutoConfiguration@ComponentScan({ "api.web", "api.rest","api.service" })@EnableMongoRepositoriespublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
9.7.4. JdbcTemplate
package api.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 api.domain.City;import api.domain.Article;import api.ApplicationConfiguration;import api.repository.CityRepository;import api.repository.ArticleRepository;import api.service.TestService;@Controllerpublic class IndexController { @Autowired private CityRepository repository; @Autowired private TestService testService; @Autowired private ApplicationConfiguration propertie; @Autowired private JdbcTemplate jdbcTemplate; @RequestMapping(value = "/article") public @ResponseBody String dailyStats(@RequestParam Integer id) { String query = "SELECT id, title, content from article 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)); }); }}
9.7.5. CrudRepository
ArticleRepository
package api.repository;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.repository.CrudRepository;import org.springframework.stereotype.Repository;import api.domain.Article;@Repositorypublic interface ArticleRepository extends CrudRepository{ Page findAll(Pageable pageable);}
Article.java
package api.domain;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Table;@Entity@Table(name = "article")public class Article implements Serializable { private static final long serialVersionUID = 7998903421265538801L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "id", unique=true, nullable=false, insertable=true, updatable = false) private Long id; private String title; private String content; public Article(){ } public Article(String title, String content) { this.title = title; this.content = content; } public Long getId() { return id; } public void setId(long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Article [id=" + id + ", title=" + title + ", content=" + content + "]"; }}
package api.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 api.domain.City;import api.domain.Article;import api.ApplicationConfiguration;import api.repository.CityRepository;import api.repository.ArticleRepository;import api.service.TestService;@Controllerpublic class IndexController { @Autowired private CityRepository repository; @Autowired private TestService testService; @Autowired private ApplicationConfiguration propertie; @Autowired private ArticleRepository articleRepository; @RequestMapping("/save") @ResponseBody public String save() { articleRepository.save(new Article("Neo", "Chen")); return "OK"; } @RequestMapping("/mysql") @ResponseBody public String mysql() { for (Article article : articleRepository.findAll()) { System.out.println(article); } return "OK"; }}
延伸阅读
长按下面二维码,关注我的公众号,每天推推送原创技术文章。