第五篇:SpringBoot - jpa 访问数据库

本文介绍如何在Spring Boot项目中集成JPA与Swagger,包括配置依赖、编写控制器和服务层代码,以及通过JPA操作数据库的具体步骤。

第一步,在pom.xml文件中添加插件 包括了mysql,jpa , swgger

<!-- jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

 <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

<!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>

第二步:编写接口controller

/**
 *  @ControllerAdvice : 注解定义全局异常处理类
 *  @RestController : 声明为controller
 *  @Api : swagger标题
 *  @CrossOrigin : 是用来处理跨域请求的注解
 */
@CrossOrigin
@RestController
@Api(value = "UserController")
@ControllerAdvice
public class UserController  {

    @Autowired
    private IUserService userService;

    @ApiOperation(value = "用户登录验证", notes = "根据用户Id验证用户密码是否正确,进行登录验证; 登录成功后,置为上线")
    @ApiImplicitParam(name = "loginId", value = "用户Id", paramType = "Query", required = true, dataType = "String")
    @RequestMapping(value = "/login", method = RequestMethod.GET, produces = "application/json")
    public Map<?, ?> login(String loginId, String password) {

        Map<?, ?> result = userService.userLogin(loginId, password);
        return result;
    }
}

第三步:编写servie层的接口规范

public interface IUserService {

    //登录
    Map<?, ?> userLogin(String loginId, String password);
}

第四步:编写实现service层接口的实现类

@Transactional(propagation = Propagation.REQUIRED)
@Service(value = "userService")
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Override
    public Map<?,?> userLogin(String loginId, String password) {
        Map<String, Object> result = new HashMap<>();
        try {
            User user = userDao.findByLoginId(loginId);
            if(user == null){
                result.put("code",201);
                result.put("result","该账号为注册");
                return result;
            }
            if (user.getPassword().equals(password)) {
                result.put("code",200);
                result.put("result",user);
            } else {
                result.put("code",201);
                result.put("result","密码错误");
            }
        }catch (Exception ex){
            System.err.println("用户密码验证失败");
            result.put("code",201);
            result.put("result","内部错误");
        }
        return result;
    }
}

第五步:通过jpa编写操作dao的类

/**
 * user 用户表 查询
 */
public interface IUserDao extends JpaRepository<User, Long> {

    User findByLoginId(String loginId);

}

第六步:编写model实体

/**
 * 用户表
 * @Entity	声明类为实体或表。
 * @Table	声明表名。
 */
@Entity
@Table(name = "user")
public class User {

    /**
     * @Id	指定的类的属性,用于识别(一个表中的主键)。
     * @GeneratedValue	指定如何标识属性可以被初始化,
     * 例如自动、手动、或从序列表中获得的值。
     * @SequenceGenerator	指定在@GeneratedValue注解中指定的属性的值。
     * 它创建了一个序列
     * @Column	指定持久属性栏属性
     */
    @Id
    @GeneratedValue(generator = "id")
    @GenericGenerator(strategy = "assigned", name = "id")
    @Column(length = 50)
    private String loginId;// 登录ID 对应数据库的列为 login_id

    @Column(length = 50)
    private String password;

    @Column(columnDefinition = "bit(1) default 0")
    private boolean ifOnline;// 是否在线 对应数据库的列为 if_online

完成,这样通过jpa操作数据库的方式也就完成了,因为使用了swagger,所以可以通过

http://localhost:8080/swagger-ui.html 直接来测试我们写的接口是否正确。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值