Spring+SpringMVC+Spring Data JPA完美整合


使用Maven实现SSS框架的整合。
方便记录,专门建了一个pom项目用来整合SSS框架所用的jar包

1、POM项目,作为父级项目,记录整个整合中的依赖jar包
pom文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.qf
M_SSS_Pom
0.0.1-SNAPSHOT
pom
这是SSS整合框架的所有依赖





org.springframework.data
spring-data-jpa
1.11.3.RELEASE




org.springframework
spring-webmvc
4.3.8.RELEASE




org.hibernate
hibernate-c3p0
5.2.10.Final




mysql
mysql-connector-java
5.1.39



com.alibaba
druid
1.1.2






org.apache.maven.plugins
maven-compiler-plugin
3.6.0

1.8
1.8
UTF-8






2、创建整合的war项目继承刚刚创建的POM项目
pom文件:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0

org.qf
M_SSS_Pom
0.0.1-SNAPSHOT

org.qf
M_SSS_War
0.0.1-SNAPSHOT
war
这是整合的Spring和SpringMVC和Sprng Data




javax.servlet
jstl
1.2



taglibs
standard
1.1.2



com.alibaba
fastjson
1.2.36



接下来开始代码的编写:

3、domain层

@Entity
@Table(name="tb_student")
@NamedQuery(name="Student.querys",query="select s from Student s")
public class Student {

//@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//日期格式化
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(length=50)
private String name;
@Column(length=2)
private String sex;
//@Basic
//@Transient只是属性不是字段
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

4、dao层
Spring Data JPA最大的改变就是dao层,只需定义接口即可,记住要继承指定的接口


public interface StudentDao extends JpaRepository{

Student findById(int id);
Student findByIdAndName(int id,String name);

}

5、service层

public interface StudentService {

boolean save(Student stu);
List queryAll();
Student querySingle(int id);
}

@Service
public class StudentServiceImple implements StudentService{

@Autowired
private StudentDao dao;

@Override
public boolean save(Student stu) {
// TODO Auto-generated method stub
System.out.println("---->"+dao.getClass().getName());
//有主键就修改,没有主键就新增
//System.out.println(1/0);
return dao.save(stu)!=null?true:false;
}

@Override
public List queryAll() {
// TODO Auto-generated method stub
//System.out.println("数量:"+dao.count());
return dao.findAll();
}

@Override
public Student querySingle(int id) {
// TODO Auto-generated method stub
return dao.findById(id);
}
}

6、控制器层:

@Controller
public class StudentController {

@Autowired
private StudentService service;

@RequestMapping("/{jn}")
public String pre(@PathVariable String jn) {

return jn;
}

@RequestMapping("/save")
public void test1(Student stu) {
if (stu!=null &&stu.getName()!=null &&stu.getName().length()>0 ) {
stu.setId(2);
System.out.println("控制器:新增:" + service.save(stu));
}
}
@RequestMapping("/queryall")
public void test2(Model m) {
System.out.println("控制器:查询全部");
if (!m.containsAttribute("list")) {
m.addAttribute("list", service.queryAll());
}
}

@RequestMapping("/querysingle")
public String test3(int id, Model m) {
System.out.println("控制器:查询单个");
List list=new ArrayList<>();
list.add(service.querySingle(id));
m.addAttribute("list", list);
return "queryall";
}

}

7、页面,都是jsp页面
新增数据页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>




新增学生


姓名:

性别:

年龄:




查询所有学生



查询数据页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>




所有学生


刷新数据
添加学生









${s.id }${s.name }${s.sex }${s.age }




8、数据库连接信息的配置文件persistence.xml
<?xml version="1.0" encoding="UTF-8"?>




org.hibernate.ejb.HibernatePersistence

























9、Spring的配置文件applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">



expression="org.springframework.stereotype.Controller" />
























10、SpringMVC的配置文件springMVC.xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">






class="org.springframework.http.converter.StringHttpMessageConverter">



class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">





application/json
text/html;charset=UTF-8





WriteMapNullValue
QuoteFieldNames
WriteDateUseDateFormat
WriteEnumUsingToString













11、web.xml的配置信息
<?xml version="1.0" encoding="UTF-8"?>

M_SSS_War


contextConfigLocation
classpath:applicationContext.xml


org.springframework.web.context.ContextLoaderListener



springmvc
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:springMVC.xml



springmvc
/



ok,发布到Tomcat即可进行操作