通过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/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

根据自己需求配置

数据库的操作非常简单,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; @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);

关键是单元测试中不报错,实际运行的时候报空指针,只指到上面坑这一行,也没有说明具体什么问题!

												

spring boot 登录注册 demo (二) -- 数据库访问的更多相关文章

  1. spring boot 登录注册 demo (四) -- 体验小结

    之前没有折腾过Spring,直接上来怼Spring Boot异常痛苦,参考着官网的guide(https://spring.io/guides)写了几个demo: spring boot 跑起来确是方 ...

  2. spring boot 登录注册 demo (一)

    Welcome to Spring Boot 代码结构 src/main/java 下 controller层,路由功能dao层,数据库的访问domain,bean的存放service,业务层appl ...

  3. spring boot 登录注册 demo (三) -- 前后端传递

    前端页面通过thymeleaf渲染 <dependency> <groupId>org.springframework.boot</groupId> <art ...

  4. Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...

  5. Java Spring Boot VS .NetCore (二)实现一个过滤器Filter

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  6. 最近做的一个Spring Boot小项目,欢迎大家访问 http://39.97.115.152/

    最近做的一个Spring Boot小项目,欢迎大家访问 http://39.97.115.152/,帮忙找找bug,网站里有源码地址 网站说明 甲壳虫社区(Beetle Community) 一个开源 ...

  7. Spring boot中注册Servlet

    Spring boot中注册Servlet 如何在spring boot项目中注册Servlet呢? 如何在spring boot项目中注册Servlet呢? 由于没有web.xml,无法直接在xml ...

  8. Spring Mvc和Mybatis的多数据库访问配置过程

    Spring Mvc 加Mybatis的多数据库访问源配置访问过程如下: 在applicationContext.xml进行配置 <?xml version="1.0" en ...

  9. Spring Boot Web Executable Demo

    Spring Boot Web Executable Demo */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.sr ...

随机推荐

  1. nodejs 构建本地web测试服务器 以及 解决访问静态资源的问题!

    直接打开html文件,是以file:///方式打开的,这种方式很多时候会遇到跨域的问题,因此我们一般会搭建一个简易的本地服务器,来运行测试页面. 一.构建静态服务器 1.使用express模块 建立个 ...

  2. 【.net 深呼吸】监听剪贴板更新(针对Vista之后系统)

    针对 XP 及以前的监视剪贴板更改的方法就不讲了,因为 XP 已严重过时.本篇老周介绍的方法面向 Vista 以上的系统. 在托管应用程序中监听剪贴板更新行为必须用到 Win 32 API ,具体做法 ...

  3. kali切换字符界面模式和切换图形界面模式

    我也是走了很多弯路,下面把正确的命令写出来,网上的不是说不正确,是linux命令做出了更改 Systemd是一种新的linux系统服务管理器 它替代了init, 直接上命令吧! 切换至字符界面 sud ...

  4. ASP.NET Core之跨平台的实时性能监控(2.健康检查)

    前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性 ...

  5. c++调用python系列(1): 结构体作为入参及返回结构体

    最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试; 因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给 ...

  6. Hadoop hdfs上传文件 权限问题

    问题描述: hadoop在虚拟机中的linux系统下 在本地通过eclipse编写代码把本地文件上传至hadoop平台的指定目录 代码如下: @Test public void upload() th ...

  7. 【JQUERY】插件的写法

    1. jquery插件怎么写 $.extend $.fn 2. 写的时候注意些什么

  8. Python:使用Kivy将python程序打包为apk文件

    1.概述 Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用 它来将Python程序打包为安卓的apk安装文件.以下是在windows环境中使用. 安装和配置的过程中会下载很多东西 ...

  9. ubuntu下处理mysql无法启动故障一例

    故障现象: mysql无法启动 1: dmesg |grep mysql [101353.820000] init: mysql post-start process (9077) terminate ...

  10. ReactiveCocoa有关集合类的使用

    Sequences 集合  表示一个不可变的序列值且不能包含空值, 1.实现NSArray的快速遍历 NSArray *numbers = @[@1, @2, @3, @4, @5, @6]; //通 ...