示例 使用CrudRepository接口访问数据
创建一个新的Maven项目,命名为crudrepositorytest。按照Maven项目的规范,在src/main/下新建一个名为resources的Folder。
(1) 修改pom.xml文件。
在pom.xml文件中增加web开发的启动器配置如下:
然后添加数据库驱动依赖配置:
最后需要加spring-boot-starter-data-jpa,它是Spring Boot项目访问数据库的核心依赖配置,加入此配置后,系统会自动导入Spring Data相关的核心数据访问接口包,以及Hibernate框架相关的依赖包,该配置如下:
修改后的完整pom.xml文件如下:
程序清单:codes/04/crudreposotorytest/pom.xml
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"> (2) 配置基本属性 在src/main/resources包下新建一个全局配置文件,命名为application.properties,在该配置文件中配置数据源和jpa相关的属性: 程序清单:codes/04/crudreposotorytest/src/main/resources/application.properties ######################################################## ### 数据源信息配置 ######################################################## # 数据库地址 spring.datasource.url = jdbc:mysql://localhost:3306/springdatajpa # 用户名 spring.datasource.username = root # 密码 spring.datasource.password = # 数据库驱动 spring.datasource.driverClassName = com.mysql.jdbc.Driver # 指定连接池中最大的活跃连接数. spring.datasource.max-active=20 # 指定连接池最大的空闲连接数量. spring.datasource.max-idle=8 # 指定必须保持连接的最小值 spring.datasource.min-idle=8 # 指定启动连接池时,初始建立的连接数量 spring.datasource.initial-size=10 ######################################################## ### JPA持久化配置 ######################################################## # 指定数据库的类型 spring.jpa.database = MYSQL # 指定是否需要在日志中显示sql语句 spring.jpa.show-sql = true # 指定自动创建|更新|验证数据库表结构等配置,配置成update # 表示如果数据库中存在持久化类对应的表就不创建,不存在就创建对应的表 spring.jpa.hibernate.ddl-auto = update # Naming strategy # 指定命名策略 spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # 指定数据库方言 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect (3) 创建持久化类 在org.fkit.crudreposotorytest包下新建四个包,依次是bean(放置持久化类的)、controller(控制器)、repository(定义数据访问接口的包)、service(业务逻辑处理类),在bean包创建一个持久化了类User.java其代码如下: 程序清单:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/bean/User.java package org.fkit.crudreposotorytest.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity // 用于标记持久化类,Spring Boot项目加载后会自动根据持久化类建表 public class User{ /** * 使用@Id指定主键. 使用代码@GeneratedValue(strategy=GenerationType.AUTO) * 指定主键的生成策略,mysql默认的是自增长。 * */ @Id @GeneratedValue(strategy =GenerationType.AUTO) private int id;// 主键. private String userName;// 姓名. cat_name private String loginName; private char sex;// 性别 private int age;// 年龄 public int getId(){ return id; } public void setId(int id){ this.id = id; } public String getUserName(){ return userName; } public void setUserName(String userName){ this.userName = userName; } public String getLoginName(){ return loginName; } public void setLoginName(String loginName){ this.loginName = loginName; } public char getSex(){ return sex; } public void setSex(char sex){ this.sex = sex; } public int getAge(){ return age; } public void setAge(int age){ this.age = age; } } (4) 定义数据访问层接口 在org.fkit.crudreposotorytest.repository包下新建一个接口命名为UserRepository,让该接口继承CrudRepository接口,以持久化对象User作为CrudRepository的第一个类型参数,表示当前所操作的持久化对象类型,Integer作为CrudRepository的第二个类型参数,用于指定ID类型,完整代码结构如下: 程序清单: codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/repository/UserRepository.java package org.fkit.crudreposotorytest.repository; import org.fkit.crudreposotorytest.bean.User; import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository } 在Spring Boot项目中数据访问层无需提供实现,直接继承数据访问接口即可。 (5) 定义业务层类 程序清单:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/service/UserService.javapackage org.fkit.crudreposotorytest.service; import javax.annotation.Resource; import javax.transaction.Transactional; import org.fkit.crudreposotorytest.bean.User; import org.fkit.crudreposotorytest.repository.UserRepository; import org.springframework.stereotype.Service; @Service public class UserService{ @Resource private UserRepository userRepository; /** * save,update ,delete 方法需要绑定事务. 使用@Transactional进行事务的绑定. * * @param User * 保存对象 */ @Transactional public void save(User User){ userRepository.save( User); } /** * 根据id删除对象 * * @param id */ @Transactional public void delete(int id){ userRepository.delete(id); } /** * 查询数据 * * @return */ public Iterable return userRepository.findAll(); } /** * 修改用户对象数据 * * @param user */ @Transactional public void update(User user){ // 先根据要修改的对象id查询出对应的持久化对象 User sessionUser = userRepository.findOne(user.getId()); // 直接调用持久化对象的set方法修改对象的数据 sessionUser.setUserName(user.getUserName()); sessionUser.setLoginName(user.getLoginName()); } } 在业务层中需要注入数据访问层对象,在上述代码中我们是通过@Resources注解将UserRepository接口对应的实现类注入进来的,从这里可以看出,只要数据访问层接口实现了CrudReposity,Spring Boot项目会自动扫描该类并为该类创建实现类对象。@Transactional注解用于申明方法的事物特性。 (6) 定义控制器类 在org.fkit.crudreposotorytest.controller包先新建一个控制器类命名为UserController,其代码如下: 程序清单:codes/04/crudreposotorytest/src/main/java/org/fkit/crudreposotorytest/controller/UserController.javapackage org.fkit.crudreposotorytest.controller; import javax.annotation.Resource; import org.fkit.crudreposotorytest.bean.User; import org.fkit.crudreposotorytest.service.UserService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/user") public class UserController{ @Resource private UserService userService; @RequestMapping("/save") public String save(){ User user =newUser(); user.setLoginName("dlei"); user.setUserName("徐磊"); user.setSex('男'); user.setAge(3); userService.save(user); return"保存数据成功!"; } @RequestMapping("/update") public String update(){ User user =new User(); user.setId(1); user.setUserName("孙悟空"); user.setLoginName("swk"); userService.update(user); return"修改成功!"; } @RequestMapping ("/delete") public String delete(){ userService.delete(1); return"删除数据成功!"; } @RequestMapping("/getAll") public Iterable // 查询所有的用户数据 return userService.getAll (); } } (7)测试应用 启动Mysql数据库,在数据库中创建名称为springdatajpa的数据库,执行脚本如下: CREATE DATABASE springdatajpa; 然后在org.fkit.crudreposotorytest包下新建App.java启动类,App.java和之前的项目一致,此处不再赘述。右键该类运行main方法。Spring Boot项目启动后,先去数据库查看是否成功自动创建了user表,然后在浏览器输入URL来测试应用。 http://127.0.0.1:8080/user/save 请求会提交到UserController类的save方法进行处理,如果该方法执行保存用户成功即可返回字符串“保存用户成功!”,如下图所示: 图4.1 保存数据 查看数据库的表信息如下: 图4.2 保存数据后的表信息 测试修改用户,在浏览器中输入如下地址: http://127.0.0.1:8080/user/update 请求会提交到UserController类的update方法进行处理,如果该方法执行修改用户成功即可返回字符串“修改成功”,如下图所示: 图4.3 修改用户 查看数据库的表信息如下: 图4.4 修改数据后的表信息 测试查询所有用户数据,在浏览器中输入: http://127.0.0.1:8080/user/getAll 请求会提交到UserController类的getAll方法进行处理,如果该方法执行查询所有用户成功即可返查询到的所有用户信息的json字符串格式,如下图所示: 图4.5 查询所有用户数据 测试删除用户数据,在浏览器中输入: http://127.0.0.1:8080/user/delete 请求会提交到UserController类的delete方法进行处理,如下图所示: 图4.6 删除用户信息 查看数据库的表信息如下: 以上所述是小编给大家介绍的Spring Boot的数据访问:CrudRepository接口的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的! Java学习资料获取(复制下段连接至浏览器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==