springboot 集成jpa,对快速开发项目很有帮助
源码地址: https://gitee.com/xing_xin/springboot-jpa.git
本章节主要讲一些简单用法,如单表的增删改查
本项目采用springboot 2.0.0.RELEASE
一、项目搭建
建立项目,结构如下
注:entity包里放与表对应的实体,repository包里放jpa的Repository,相当于dao层
引入必要jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
二、完善相关的业务代码
1、增加实体类
@Data
@Entity
@Table(name = "t_user")
public class User {
/**GenerationType
* TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
*/
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "age")
private String age;
@Column(name = "school")
private String school;
@Column(name = "sex")
private String sex;
}
注意:上面@table标签是表示这个实体与表(t_user)映射,如果表名是user,不用这个注解,jpa能自动找到那user表,反之不行
2、增加自定义Repository接口
@Repository
public interface TUserRepository extends JpaRepository<User,Long> {
}
注:这里是自定义jpa的接口,默认有保存与查询的可以直接用
如
3、增加 一个service并调用
@Service
public class UserServiceImpl implements UserService {
@Autowired
private TUserRepository userRepository;
@Override
public void save(User user) {
userRepository.save(user);
}
@Override
public List<User> selectList(User user) {
return userRepository.findAll();
}
}
4、写个测试类批量保存数据,看是否成功
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {JpaApplication.class})// 指定启动类
public class UserTest {
@Autowired
private UserService userService;
@Test
public void save(){
for (int i = 0 ;i < 10;i++ ) {
User user = new User();
user.setAge("1_"+i);
user.setName("test1_"+i);
user.setSchool("school1_" + i);
user.setSex("男_" + i);
userService.save(user);
}
}
}
到此一个简单的springboot + jpa项目已经完成了
三、如何实现增删除改查
为了方便测试,我们直接把 userRepository 注入到测试类里(实际项目可不能这么干的)
如下
1、增加数据
下面是批量增加10条数据
for (int i = 0 ;i < 10;i++ ) {
User user = new User();
user.setAge("1_"+i);
user.setName("test1_"+i);
user.setSchool("school1_" + i);
user.setSex("男_" + i);
userRepository.save(user);
}
运行结果如下
2、修改数据
@Test
public void update(){
User user = new User();
user.setId(3);
user.setAge("1_更新");
user.setName("test1_更新");
user.setSchool("school1_更新");
user.setSex("男_更新" );
userRepository.save(user);
}
更新结果如下
注:总结上面可以看出,更新与新增数据时,实体对象只有一个区别,那就是更新时参数里有主键,新增时没有,所以平时项目开发时,只传了主键值 ,jpa会执行更新操作
3、删除数据
@Test
public void del(){
User user = new User();
user.setId(4);
userRepository.delete(user);
}
4、查询列表
@Test
public void selectList(){
List<User> list = userRepository.findAll();
System.out.println(list);
}
源码地址: https://gitee.com/xing_xin/springboot-jpa.git
以上都是些简单的查询,下节展示一些复杂的操作