Spring Boot應用連線資料庫MySQL,並編寫自定義SQL
阿新 • • 發佈:2019-01-28
1、修改pom.xml檔案
在專案的pom.xml檔案上增加如下程式碼,新增依賴檔案。<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->2、設定全域性配置檔案 在src/main/resources/application.properties中設定資料來源和jpa配置。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>1.5.4.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>1.5.4.RELEASE</version> </dependency>
server.port=8080 spring.datasource.url=jdbc:mysql://104.100.22.56:3306/kg_on?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false spring.datasource.username=55 spring.datasource.password=ithc spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver # Specify the DBMS spring.jpa.database = MYSQL # Show or not log for each sql query spring.jpa.show-sql = true # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
需要新增的配置都在上面的程式碼中,不需要另外的XML配置和Java配置。上面程式碼中的資料庫配置,你需要換成你的資料庫的地址和使用者名稱密碼。hibernate的ddl-auto=update配置表名,資料庫的表和列會自動建立。
3、MySQL資料庫
安裝MySQL,MySQL官方下載連線。安裝後,建立一個名為user的表。我的表如下:4、建立實體
建立Student類。User類用來建立一個User實體,User包含三個屬性id,username,password。User實體和Mysql資料庫的User表相對應,如上圖。package com.crehc.rwwc.kzg.Entity; import javax.persistence.GeneratedValue; import javax.persistence.*; @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Integer id; @Column(name = "username", nullable = false) private String username; @Column(name = "password", nullable = false) private String password; public User() {} public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
5、實體的資料訪問層UserRepository
respositroy包下建立UserRespositroy介面。UserRespositroy介面繼承CrudRespositroy,CrudRespositroy已經實現了save,delete,deleteAll,findOne和findAll。package com.crerc.rrrc.krrg.Repository; import com.credithc.rc.kg.Entity.User; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Repository @Transactional public interface UserRepository extends CrudRepository<User, String> { //通過使用者名稱密碼查詢使用者 @Query(value = "select u.* from user u where u.username=?1 and u.password =PASSWORD(?2)", nativeQuery = true) @Modifying List<User> findUserByName(String username, String password); @Query(value = "select u.* from user u where u.username=?1", nativeQuery = true) @Modifying List<User> findByUsername(String username); @Query(value = "insert into user (username,password) values (?1,PASSWORD(?2))", nativeQuery = true) @Modifying Integer addUser(String username, String password); }
6、編寫控制器Controller
@RequestMapping(value = "/addUser", method = RequestMethod.POST) @ResponseBody public String addUser(@RequestBody JSONObject obj,HttpServletRequest request) { String username = request.getHeader("username"); String password = request.getHeader("password"); String str = null; try { List<User> userList = userRepository.findByUsername(username); if(userList.size()>0){ return "該使用者名稱已經存在,不能新增!"; }else{ Integer flag = userRepository.addUser(username,password); if(flag ==1){ return "新增使用者名稱成功!"; }else{ return "新增使用者名稱失敗!"; } } } catch (Exception e) { e.printStackTrace(); return "新增使用者名稱失敗!"; } }
這裡只說明瞭Springboot訪問MySQL資料庫並實現自定義SQL的方法,至於自定義的增刪改查的方法,比較簡單,這裡不贅述。 由於剛接觸Springboot不久,以筆記的形式記錄下來,若有不足還請指正。