如何整合Spring+SpringMvc+SpringDataJpa框架

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

细河ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

Spring + SpringMvc + Spring Data Jpa框架整合

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

准备

数据库脚本

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.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
jdbc.username=root
jdbc.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
@ToString
public 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() 如何整合Spring+SpringMvc+Spring Data Jpa框架

add()如何整合Spring+SpringMvc+Spring Data Jpa框架 可以看到,查询和添加都正常,接下来我们看下和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

@Service
public 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框架 如何整合Spring+SpringMvc+Spring Data Jpa框架

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


网站栏目:如何整合Spring+SpringMvc+SpringDataJpa框架
文章起源:http://scyanting.com/article/piedhe.html