通过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. 是什么优化让 .NET Core 性能飙升?

    .NET Core(开放源代码,跨平台,x-copy可部署等)有许多令人兴奋的方面,其中最值得称赞的就是其性能了. 感谢所有社区开发人员对.NET Core做出的贡献,其中的许多改进也将在接下来的几个 ...

  2. POJ 1470 Closest Common Ancestors(最近公共祖先 LCA)

    POJ 1470 Closest Common Ancestors(最近公共祖先 LCA) Description Write a program that takes as input a root ...

  3. Entity Framework Core 命名约定

    本文翻译自<Entity Framework Core: Naming Convention>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意:我使用的是 Entity ...

  4. 事务之使用JDBC进行事务的操作

    本篇讲述数据库中非常重要的事务概念和如何使用MySQL命令行窗口来进行数据库的事务操作.下一篇会讲述如何使用JDBC进行数据库的事务操作. 事务是指数据库中的一组逻辑操作,这个操作的特点就是在该组逻辑 ...

  5. web开发之负载均衡的简单架构

    负载均衡 负载均衡的核心思想就是:请求分担 最简单的配置: 一台负载均衡服务器 两台webserver服务器 两台webserver服务器需要配置相同的服务器环境,设置相同的域名指向 负载均衡服务器需 ...

  6. Ubuntu14.04_x64_Caffe_GPU环境配置

    为了让Caffe支持GPU模式,需要安装GPU和CUDA Toolkit,依据NVIDIA官方教程以ubuntu14.04_X64安装cuda8.0,配置Gpu为例如下所示: 1.检查安装环境,是否具 ...

  7. Android - 关于设备版本号

    设备信息可以在Settings - About 里看到 最近想改机器的build number,找到了 build/core/Makefile 里的定义 # Display parameters sh ...

  8. (转)java反射机制及简单工厂模式

    第一步,定义一个接口类 package factory.face; /** * 接口,为了保证返回的对象可以统一用 Product接受 * @author Administrator */ publi ...

  9. (转)面试大总结之一:Java搞定面试中的链表题目

    面试大总结之一:Java搞定面试中的链表题目 分类: Algorithm Interview2013-11-16 05:53 11628人阅读 评论(40) 收藏 举报 链表是面试中常出现的一类题目, ...

  10. 【JAVASCRIPT】React学习-巧用 props 的 children 属性实现内容填充

    背景 平常写组件,经常遇到需要获取内容放入组件内部的情形. 实现方法 我们有两种实现方式 1. 自定义 props render 的时候通过获取 this.props.content 填充到组件内部 ...