前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot 登录注册 demo (二) -- 数据库访问

spring boot 登录注册 demo (二) -- 数据库访问

作者头像
千往
发布2018-01-24 10:56:50
1.5K0
发布2018-01-24 10:56:50
举报
文章被收录于专栏:不想当开发的产品不是好测试

通过data-jpa来访问数据库

代码语言:javascript
复制
     <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

代码语言:javascript
复制
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类中的参数从而得到方法

代码语言:javascript
复制
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层中

代码语言:javascript
复制
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);

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档