玩转springboot:整合jpa教你简单crud

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 玩转springboot:整合jpa教你简单crud

最近才开始关注了jpa这个操作数据库的框架,发现其实和其他的 orm框架没有太大的区别,所以学习了一下,这里写一篇简单的springboot整合jpa的教程,做一个小小的记录。

这里以用户表User作为基本的操作数据库的实体类为例。

导入pom.xml的依赖


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

如果你是jdk8或者10,可能会遇到一个问题,javax/xml/bind/JAXBException,具体查看这篇文章解决javax/xml/bind/JAXBException

编写一个实体类(bean)和数据表进行映射,并且配置好映射关系


/**
 * @author 欧阳思海
 * @date 2018/7/26 16:09
 */
//使用JPA注解配置映射关系
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "user") //@Table来指定和哪个数据表对应;如果省略默认表名就是user;
public class User {

    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;

    @Column(name = "username",length = 50) //这是和数据表对应的一个列
    private String username;

    @Column(name = "password",length = 50) //这是和数据表对应的一个列
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

关于注解的意义,在上面的注释中都注明了。如果要查看更加详细的解释,查看我的另外的文章。

编写一个Dao接口来操作实体类对应的数据表(Repository)


/**
 * @author 欧阳思海
 * @date 2018/7/27 9:39
 */
public interface UserDao extends JpaRepository<User,Integer> {
}

解释:这个JpaRepository里面已经包括了基本的crud方法,我们可以看一下源代码。

这里写图片描述

我们可以发现这个借口,已经实现了我们需要的基本的crud,给我们带来了很大的方便。

我们再看看他的整体的类的结构

这里写图片描述

事实上JpaRepository继承自PagingAndSortingRepository,我们也可以很方便的实现分页的功能,这样对于我们开发来说还是省了不少事。

数据源application.properties配置


spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=0911SIHAI
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

创建service进行简单的测试


/**
 * @author 欧阳思海
 * @date 2018/7/26 16:11
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public void add(String username, String password) {
        User user = new User();
        user.setPassword(password);
        user.setUsername(username);
        userDao.save(user);
    }

    @Override
    public void deleteByName(String userName) {
        User user = new User();
        user.setUsername(userName);
        userDao.delete(user);
    }

    @Override
    public List<User> getAllUsers() {
        List<User> users = userDao.findAll();
        return users;
    }
}

测试类


/**
 * @author 欧阳思海
 * @date 2018/7/26 16:22
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserTest {

    @Autowired
    private UserService userService;

    @Test
    public void testAdd(){

        userService.add("sihai","abc");
        userService.add("yan","abc");
    }

    @Test
    public void testDelete(){
        userService.deleteByName("sihai");
    }

    @Test
    public void testQuery(){

        List<User> users = userService.getAllUsers();

        Assert.assertEquals(2, users.size());
    }
}

到这里关于springboot整合jpa的基本操作已经完成了,关于更加复杂的jpa的操作可以查看jpa官网,或者查看jpa简单教程

后续也会有jpa的相关教程,敬请查看!

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 玩转springboot:整合jpa教你简单crud


 上一篇
windows系统关闭某个端口的服务 windows系统关闭某个端口的服务
利用下面命令查询例如查询,404端口。 netstat -ano | findstr 443 就发现是5624进程占用了,所以关掉即可!
下一篇 
从普本到渣硕,从大学生到自媒体的年轻人,我分享我的Coding生活 从普本到渣硕,从大学生到自媒体的年轻人,我分享我的Coding生活
今天,主要会从下面的几个方面分享我的经历: 我 程序员4年的那些事 如何成为程序员中的战斗机 未来 1 我首先,还是介绍一下渺小的我自己,我,是一名进入程序员大军4年的萌新,从普本,到渣硕,一路经历也算丰富,也许能给刚刚进入程序员大军的