經過data-jpa來訪問數據庫java
<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驅動mysql
數據源配置,spring boot的配置文件是:application.propertiesspring
spring.datasource.url=jdbc:mysql://localhost/testdemo spring.datasource.username=guest spring.datasource.password=guest spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=update
根據本身需求配置sql
數據庫的操做很是簡單,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操做,是否是很方便!app
定義的UserRepository繼承了JpaRepository,JpaRepository內置了一些查詢方法也能夠直接拿來使用dom
剛定義了一些UserRepository方法,下面看看使用,在servcie層中spring-boot
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; @Service public 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);
關鍵是單元測試中不報錯,實際運行的時候報空指針,只指到上面坑這一行,也沒有說明具體什麼問題!