1. 程式人生 > >Spring Boot應用連線資料庫MySQL,並編寫自定義SQL

Spring Boot應用連線資料庫MySQL,並編寫自定義SQL

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 -->
<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>
2、設定全域性配置檔案 在src/main/resources/application.properties中設定資料來源和jpa配置。
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不久,以筆記的形式記錄下來,若有不足還請指正。