千家信息网

如何整合Spring+SpringMvc+Spring Data Jpa框架

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要介绍如何整合Spring+SpringMvc+Spring Data Jpa框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring + SpringMvc
千家信息网最后更新 2025年02月06日如何整合Spring+SpringMvc+Spring Data Jpa框架

这篇文章主要介绍如何整合Spring+SpringMvc+Spring Data Jpa框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Spring + SpringMvc + Spring Data Jpa框架整合

我们来说下spring 整合 spring mvc 和 spring data jpa的整个过程 先来看下项目结构 我把配置文件拆分为spring-mvc.xml 和spring-jpa.xml两个文件,使用 jdbc.properties来配置数据源

准备

数据库脚本

CREATE TABLE `tb_resume` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,  `address` varchar(255) CHARACTER SET utf8 DEFAULT NULL,  `phone` varchar(255) CHARACTER SET utf8 DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;-- ------------------------------ Records of tb_resume-- ----------------------------BEGIN;INSERT INTO `tb_resume` VALUES (1, '成龙', '北京朝阳', '17611222456');INSERT INTO `tb_resume` VALUES (2, '甄子丹', '北京海淀', '10086');INSERT INTO `tb_resume` VALUES (3, '谢霆锋', '河南郑州', '10086');COMMIT;

整合需要的jar

    4.0.0    org.example    spring-data-jpa    1.0-SNAPSHOT    war    spring-data-jpa Maven Webapp            UTF-8        1.8        1.8        5.2.8.RELEASE                            junit            junit            4.12                            org.springframework.data            spring-data-jpa            2.3.4.RELEASE                                    org.hibernate            hibernate-entitymanager            5.4.21.Final                            org.hibernate            hibernate-validator            5.3.6.Final                                            org.springframework            spring-core            ${spring.version}                            org.springframework            spring-orm            ${spring.version}                            org.springframework            spring-context            ${spring.version}                            org.springframework            spring-context-support            ${spring.version}                            org.springframework            spring-tx            ${spring.version}                            org.springframework            spring-jdbc            ${spring.version}                            org.springframework            spring-test            ${spring.version}                            org.aspectj            aspectjweaver            1.9.4                                    mysql            mysql-connector-java            5.1.46                                    com.alibaba            druid            1.1.21                            org.projectlombok            lombok            1.18.12                                    org.springframework            spring-webmvc            ${spring.version}                            com.fasterxml.jackson.core            jackson-databind            2.11.1                                    javax.servlet            javax.servlet-api            3.1.0            provided                        ssm                                                        org.apache.maven.plugins                    maven-compiler-plugin                    3.8.1                                            8                        8                        UTF-8                                                            

接下来我来说下如何进行集成

1. spring 集成 spring data jpa

1.1 数据源配置文件jdbc.properties

这里我们使用的数据库是MySQL

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8jdbc.username=rootjdbc.password=root

1.1 Jpa配置文件 spring-jpa.xml

我们先来配置一下数据源,因为我们用properties文件来进行配置的,所以我们需要引入下配置文件,然后引入数据源,这里数据源我们使用的是阿里的Druid

                                                    

接下来配置spring 的包扫描

    

接下来就配置jpa的EntityManagerFactory以及jpa的事务管理器还有jpa dao层的一些细节,比如配置dao层所在的包,指定EntityManagerFactory以及事务管理器

                                                                                                                                                                                                                                                                                                                            

到这里,我们关于jpa的配置以及完全结束。

1.3 Jpa 实体对象配置Resume.java

配置一个Jpa对象需要使用到一下注解

  • @Entity 告诉Jpa,这是我们配置的一个实体类

  • @Table 指定类和数据库表映射关系

  • @Id 标记主键ID

  • @GeneratedValue 主键生成策略,根据不同的数据库可以配置不同的策略

  • @Column 指定实体属性和数据库表中属性的对应关系

@Entity@Table(name = "tb_resume")@Data@ToStringpublic class Resume {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Integer id;    @Column(name = "name")    private String name;    @Column(name = "address")    private String address;    @Column(name = "phone")    private String phone;}

1.4 配置Jpa dao层接口ResumeDao.java

想要使用jpa提供的数据库操作方法,我们需要继承JpaRepositoryJpaSpecificationExecutor两个接口,这里可能有同学会问了,java不是单继承吗? 注意,这里的ResumeDao是接口,接口是可以多继承的。 JpaRepositoryJpaSpecificationExecutor这两个接口提供了我们常用的一些增删改查操作,继承之后就不需要我们自己写这些SQL操作了。

public interface ResumeDao extends JpaRepository, JpaSpecificationExecutor {}

1.5 整合测试

以上我们所有jpa相关的配置都以及完成了,接下来我们来测试下,我们的配置有没有问题 测试类ResumeDaoTest.java 这里我们使用junit4来进行测试,里面有两个测试用例,查询所有和添加,我们分别来测试下

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:spring-*.xml"})public class ResumeDaoTest {    @Autowired    private ResumeDao resumeDao;    @Test    public void findAll() {        List all = resumeDao.findAll();        System.out.println(all);    }    @Test    public void add() {        Resume resume = new Resume();        resume.setName("王五");        resume.setAddress("Henan");        resume.setPhone("17611222722");        System.out.println(resumeDao.save(resume));    }    }

findAll()

add() 可以看到,查询和添加都正常,接下来我们看下和springmvc的集成

2. spring 集成springMvc

2.1 配置文件spring-mvc.xml

相较于jpa的整合,spring mvc的整合就简单了一点,都比较简单,我们就不解释了

                                            

2.2 Servlet配置文件web.xml

主要是配置spring mvc的监听类DispatcherServlet,配置一下拦截路径,这里我们直接拦截出了jsp之外的所有文件。另外为了防止字符乱码,这里我们配置了字符过滤器

    Archetype Created Web Application            /jsp/login.jsp                    characterEncodingFilter        org.springframework.web.filter.CharacterEncodingFilter                    encoding            UTF-8                            forceEncoding            true                        characterEncodingFilter        /*                dispatcherServlet        org.springframework.web.servlet.DispatcherServlet                    contextConfigLocation            classpath*:spring-*.xml                        dispatcherServlet        /    

2.3 配置controller ResumeController.java

这里我们配置了针对resume的基本增删改查操作,以及一些跳转操作

@Controller@RequestMapping("/resume")public class ResumeController {    @Resource    private ResumeService resumeService;    @RequestMapping(value = "/getAll", method = RequestMethod.GET)    @ResponseBody    public Result getAll() {        return resumeService.getResumeList();    }    @RequestMapping(value = "/toAdd")    public String addResume() {        return "addResume";    }    @RequestMapping(value = "/add", method = RequestMethod.POST)    @ResponseBody    public Result addResume(@RequestBody Resume resume) {        return resumeService.addResume(resume);    }    @RequestMapping("/update")    @ResponseBody    public Result toUpdate(@RequestBody Resume resume) {        return resumeService.updateResume(resume);    }    @RequestMapping("/toUpdate/{id}")    public String toUpdateResume(@PathVariable("id") Integer id, ModelMap modelMap) {        Result resume = resumeService.getResumeById(id);        modelMap.addAttribute("resume", resume.getResult());        return "editResume";    }    @RequestMapping("/delete/{id}")    @ResponseBody    public Result deleteResume(@PathVariable("id") Integer id) {        return resumeService.deleteResume(id);    }}

2.4 配置service接口ResumeService

public interface ResumeService {    Result getResumeList();    Result getResumeById(Integer id);    Result addResume(Resume resume);    Result updateResume(Resume resume);    Result deleteResume(Integer id);}

2.5 配置service实现类ResumeServiceImpl.java

@Servicepublic class ResumeServiceImpl implements ResumeService {    @Resource    private ResumeDao resumeDao;    @Override    public Result getResumeList() {        return ResultUtils.success(resumeDao.findAll());    }    @Override    public Result getResumeById(Integer id) {        Optional resume = resumeDao.findById(id);        return ResultUtils.success(resume.orElse(null));    }    @Override    public Result addResume(Resume resume) {        return ResultUtils.success(resumeDao.save(resume));    }    @Override    public Result updateResume(Resume resume) {        return ResultUtils.success(resumeDao.save(resume));    }    @Override    public Result deleteResume(Integer id) {        Optional resume = resumeDao.findById(id);        if (!resume.isPresent()) {            return ResultUtils.error(500, "请求删除对象未找到");        }        resumeDao.delete(resume.get());        return ResultUtils.success();    }}

2.6 测试

其实项目中我们实现了一个简单的登录,以及针对resume的增删改查操作,因为这不是我们关注的重点,所以我就不贴代码了,想要完整项目的可以去我的码云上面下载完整代码 我们直接看测试情况

以上是"如何整合Spring+SpringMvc+Spring Data Jpa框架"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0