spring boot 登入註冊 demo (二) -- 資料庫訪問

來源:互聯網
上載者:User

標籤:login   jdbc   cti   資料來源配置   delete   簡單   java   username   boolean   

通過data-jpa來訪問資料庫

     <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>

記得加上mysql-connector-java的依賴,不然提示找不到jdbc驅動

 

資料來源配置,spring boot的設定檔是:application.properties

spring.datasource.url=jdbc:mysql://localhost/testdemospring.datasource.username=guestspring.datasource.password=guestspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.jpa.properties.hibernate.hbm2ddl.auto=update

根據自己需求配置

 

資料庫的操作非常簡單,JPA會根據解析User類中的參數從而得到方法

package com.jwen.login.dao;import java.util.List;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query;import org.springframework.data.repository.query.Param;import com.jwen.login.domain.User;public interface UserRepository extends JpaRepository<User, Long> {    public List<User> findByName(String name);        public List<User> findByNameAndPassword(String name,String password);    @Query("from User u where u.name=:name")    public List<User> findUser(@Param("name") String name);}

 

如User中定義了name和password兩個屬性,那麼你就可以使用 findByName 和 findByNameAndPassword方法用來從DB中查詢資料,不用寫sql操作,是不是很方便!

定義的UserRepository繼承了JpaRepository,JpaRepository內建了一些查詢方法也可以直接拿來使用

 

剛定義了一些UserRepository方法,下面看看使用,在servcie層中

package com.jwen.login.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.jwen.login.dao.UserRepository;import com.jwen.login.domain.User;@Servicepublic class UserService {    @Autowired    private UserRepository userRepository;    public boolean verifyUser(User user) {        if (userRepository.findByNameAndPassword(user.getName(), user.getPassword()).isEmpty()) {            return false;        } else {            return true;        }    }    public String registerUser(User user) {        if (userRepository.findByName(user.getName()).isEmpty()) {            userRepository.save(user);            return "使用者名稱  " + user.getName() + " 註冊成功";        } else {            return "使用者名稱 " + user.getName() + "已被佔用!";        }    }}

通過

@Autowired 

private UserRepository userRepository;

自動裝配了一個UserRepository執行個體,內建增刪改查功能,save,delete,save,查就是剛剛的find操作

 

這裡有個小坑,坑了我好一會兒

findByName返回的應該是一個list,但之前我寫的返回的是一個類User,

坑:  public User findByName(String name);

正確: public List<User> findByName(String name);

關鍵是單元測試中不報錯,實際啟動並執行時候報null 指標,只指到上面坑這一行,也沒有說明具體什麼問題! 


 

spring boot 登入註冊 demo (二) -- 資料庫訪問

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.