Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷。当然,也可以提供用户自己定义的sql。(个人喜欢自己写sql,因为可控,所以后面介绍springboot使用Mybatis)springdata对单表操作十分方便,但是遗憾的是多对多表操作支持的不太好,这时候自己写sql的好处就体现了。
springdata官方文档可以推荐看一下,想深入了解的同学推荐去学习。
win10+IntelliJ IDEA +JDK1.8
springboot版本:springboot 1.5.14 ——2.0后的springboot增加了挺多新特性,暂时先不做了解
在application.properties文件中加入数据库所需要的配置信息
#数据库类信息 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #展示sql语句 spring.jpa.show-sql=true #设置方言 spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect #时区设置 spring.jackson.time-zone=GMT+8 #日期期时格式设置置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
配置文件准备好后,会报错我们需要导入一些依赖。以下是使用到的pom.xml文件
xml version="1.0" encoding="UTF-8"?>初次下载可能需要一些时间,如果使用的是中央库的话,可能下载真的慢还可能出错,推荐改成阿里云的仓库。自己找教程,这些不是事~xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.wen demo 0.0.1-SNAPSHOT jar test Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.14.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin
项目结构:
数据库表的设计:
实体类的编写,这里用了lombok插件。如果没有的同学可以自己写get-set方法! 下面介绍一下使用到的注解。
注明这是个 实体类
@Entity
标注用于声明一个实体类的属性映射为数据库的主键列
@Id
注解存在的意义主要就是为一个实体生成一个唯一标识的主键
@GeneratedValue
对应数据库的列。默认和字段名一致
@Column
package com.wen.springboot_test_2.Entity; import lombok.Data; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import java.io.Serializable; @Entity @Data public class Users implements Serializable { @Id @GeneratedValue private Integer user_id ; @Column private String password; }
东西准备好了,下面我们开始写Dao层。
package com.wen.springboot_test_2.Dao; import com.wen.springboot_test_2.Entity.Users; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Repository public interface UsersDao extends JpaRepository,String>{ /** * 自动生成的sql * @return */ List findAll(); /** * 自己写sql * @return */ @Query("SELECT u from Users u ") List findALL2(); @Transactional @Modifying //告诉JPA使用的是写操作 @Query("update Users set password=:password where user_id=:user_id ") Integer updateUserPassword(@Param("user_id") String user_id,@Param("password") String password); }
接下来是service层和实现的service的类
package com.wen.springboot_test_2.service; import com.wen.springboot_test_2.Entity.Users; import java.util.List; public interface UserService { /** * 测试JPA的sql * @return */ ListfindAllUser(); /** * 测试我们自己写的sql * @return */ List findAllUser2(); /** * 插入数据库 * @param users * @return */ Users saveUser(Users users); /** * 修改数据库数据 * @param account * @param password * @return */ Integer updadteUserPassword(String account,String password); /** * 删除用户 * @param users * @return */ void deleteUser(Users users); }
实现类如下:
package com.wen.springboot_test_2.service.Impl; import com.wen.springboot_test_2.Dao.UsersDao; import com.wen.springboot_test_2.Entity.Users; import com.wen.springboot_test_2.service.UserService; import org.apache.catalina.User; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class UserServiceImpl implements UserService{ @Resource UsersDao usersDao; @Override public ListfindAllUser() { return usersDao.findAll(); } @Override public List findAllUser2() { return usersDao.findALL2(); } @Override public Users saveUser(Users users) { /** * 这里写校验逻辑,此教程为入门系列,就不写了--懒 */ return usersDao.save(users); } @Override public Integer updadteUserPassword(String user_id, String password) { /** * 这里写校验逻辑,此教程为入门系列,就不写了--懒 */ return usersDao.updateUserPassword(user_id,password); } @Override public void deleteUser(Users users) { usersDao.delete(users); } }
Controller层的编写:
package com.wen.springboot_test_2.JPATestcontroller; import com.wen.springboot_test_2.Entity.Users; import com.wen.springboot_test_2.service.UserService; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping(value = "user") //设置全局url public class UserController { @Resource private UserService userService; /** * 增操作 * @param users * @return */ @GetMapping(value = "insert") public String insertUser(Users users) { // System.out.println(userService.saveUser(users)); return "插入成功"+userService.saveUser(users); } /** * 更新操作 * @param account * @param password * @return */ @GetMapping(value = "update") public String update(String account, String password) { System.out.println("开始更新:"); userService.updadteUserPassword(account,password); return "更新成功"; } /** * 查询操作 * @return */ @GetMapping(value = "find") public String findUser() { System.out.println(userService.findAllUser()); System.out.println("----------完美分割线--------------"); return "查询成功:"+userService.findAllUser2(); } @GetMapping(value = "delete") public String findUser(Users users) { userService.deleteUser(users); return "删除成功:"; } }
OK编写完成了。接下来就是测试了。。。运行springboot主方法。
链接:http://localhost:8080/user/find
springboot的入门使用springData基本的增删改查操作就这样做完了。相对来说是不是比以前开发更加简单了,springboot一大堆注解。常用的也挺多的,不过写多了就知道了。每个注解也存在有挺多属性,这个需要自己去研究了。如果写下去每个属性都介绍,那篇幅太长了。。有时间小编会一一介绍这些注解的属性。祝大家学习进步,步步高升~~~
https://github.com/LuckToMeet-Dian-N/springboot_Learn_2
程序人生,与君共勉