SSM整合详细介绍

1搭建环境,导入maven依赖

<!-- 定义属性 -->

<properties>

<!-- 设置项目字符集 -->

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- spring版本号 -->

<spring.version>4.3.2.RELEASE</spring.version>

</properties>

<dependencies>

<!-- 配置servlet -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.0.1</version>

<scope>provided</scope>

</dependency>

<!-- 配置jsp -->

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>javax.servlet.jsp-api</artifactId>

<version>2.2.1</version>

<scope>provided</scope>

</dependency>

<!-- spring web -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- spring webmvc -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.5</version>

</dependency>

<!-- mybatis整合spring时的插件 -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.2</version>

</dependency>

<!-- druid数据源 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.1.8</version>

</dependency>

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

</dependency>


<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>${spring.version}</version>

</dependency>

<!--使用AspectJ方式注解需要相应的包 -->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjrt</artifactId>

<version>1.6.11</version>

</dependency>

<!--使用AspectJ方式注解需要相应的包 -->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.6.11</version>

</dependency>

<!-- jstl -->

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

<version>1.2</version>

</dependency>

<dependency>

<groupId>taglibs</groupId>

<artifactId>standard</artifactId>

<version>1.1.2</version>

</dependency>

</dependencies>

<build>

<!-- 配置tomcat插件,web端 -->

<plugins>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<configuration>

<!-- 配置项目的请求路径 -->

<path>/ssm</path>

<!-- 配置服务器端口号 -->

<port>10000</port>

</configuration>

</plugin>

</plugins>

</build>

2建表、建实体类

Sql:

CREATE DATABASE /*!32312 IF NOT EXISTS*/`edu360` /*!40100 DEFAULT CHARACTER SET utf8 */;


USE `edu360`;


/*Table structure for table `dept` */


DROP TABLE IF EXISTS `dept`;


CREATE TABLE `dept` (

  `DEPTNO` int(2) NOT NULL,

  `DNAME` varchar(14) DEFAULT NULL,

  `LOC` varchar(13) DEFAULT NULL,

  PRIMARY KEY (`DEPTNO`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


/*Data for the table `dept` */


insert  into `dept`(`DEPTNO`,`DNAME`,`LOC`) values (10,'ACCOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON'),(70,'采购部','大连'),(124,'小偷业务部','火车站'),(200,'sales','beijing'),(201,'测试二部','日本'),(202,'大数据三部','韩国'),(203,'大数据四部','朝鲜'),(210,'sales','beijing'),(220,'sales','beijing'),(230,'sales','beijing'),(240,'sales','beijing'),(250,'sales','beijing'),(301,'大数据44部','巴厘岛'),(302,'大数据五部','瑞士'),(303,'大数据66部','五道口'),(400,'AI一部','上海浦东'),(401,'AI一部','上海浦东'),(450,'猴子基地','水帘洞'),(452,'烤牛馆','火焰山'),(3005,'大数据二部','永丰基地');

实体类:

public class DeptEntity {

public int deptno;

public String dname;

public String loc;

......

}

3创建映射文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="">

<!-- 查询全部 -->

<select id="selectAllDept" resultType="cn.edu360.ssm.dao.entity.DeptEntity">

select * from dept

</select>


<!-- 传参添加部门信息 -->

<insert id="insertDeptParams" parameterType="cn.edu360.ssm.dao.entity.DeptEntity">

INSERT INTO dept

VALUES(#{deptno},#{dname},#{loc})

</insert>



<!-- ID查询 -->

<select id="selectDeptById" parameterType="int" resultType="cn.edu360.ssm.dao.entity.DeptEntity">

select * from dept

where deptno=#{dn}

</select>


<!-- id删除 -->

<delete id="delDeptById" parameterType="int">

delete from dept where

deptno=#{dn}

</delete>

<!-- id更新 -->

<update id="updDeptById" parameterType="cn.edu360.ssm.dao.entity.DeptEntity">

update dept set

dname=#{dname},loc=#{loc} where deptno=#{deptno}

</update>


<!-- 模糊查询 -->

<select id="selectDeptByLike" parameterType="java.lang.String"

resultType="cn.edu360.ssm.dao.entity.DeptEntity">

SELECT * FROM dept WHERE dname LIKE CONCAT('%',#{keyWord},'%')

</select>

</mapper>

 

4创建dao层接口

public interface DeptMapper {

/**查询全部*/

public List<DeptEntity> selectAllDept();

/**添加部门*/

public int insertDeptParams(DeptEntity dept);

/**ID查询*/

public DeptEntity selectDeptById(int id);

/**ID删除*/

public int delDeptById(int id);

/**名称模糊查询*/

public List<DeptEntity> selectDeptByLike(String keyWord);

}

注意:同时修改映射文件的namespace

namespace="cn.edu360.ssm.dao.mapper.DeptMapper"

5创建mybatis配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

6创建IOC容器整合mybatis

6.1配置druid数据源

创建db.properties文件

6.2SqlSessionFactoryBean

<!-- SqlSessionFactory -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 加载配置文件 -->
		<property name="configLocation" value="classpath:mybatisConfig.xml"></property>
		<!-- 加载映射文件 -->
		<property name="mapperLocations" value="classpath:cn/edu360/ssm/dao/entity/*.xml"></property>
	</bean>

6.3TransactionManager

<!-- 事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>

6.4启用注解事务

<!-- 启用基于注解实现事务管理 -->
	   <tx:annotation-driven transaction-manager="transactionManager"/>

6.5扫描dao层接口

<!-- 扫描dao层接口 -->
	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="cn.edu360.ssm.dao.mapper"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
	</bean>

7创建业务层接口

/**

 * 业务层接口

 * @author Administrator

 *

 */

public interface DeptServiceInter {

/**查询全部*/

public List<DeptEntity> selectAllDept();

/**添加部门*/

public int insertDeptParams(DeptEntity dept);

/**ID查询*/

public DeptEntity selectDeptById(int id);

/**ID删除*/

public int delDeptById(int id);

/**名称模糊查询*/

public List<DeptEntity> selectDeptByLike(String keyWord);

}

8创建业务层实现类

/**

 * 业务层实现类

 * @author Administrator

 *

 */

@Service("deptServiceImpl")

public class DeptServiceImpl implements DeptServiceInter {

//注入dao层

@Autowired

public DeptMapper mapper;

public List<DeptEntity> selectAllDept() {

return mapper.selectAllDept();

}

    @Transactional

public int insertDeptParams(DeptEntity dept) {

return mapper.insertDeptParams(dept);

}


public DeptEntity selectDeptById(int id) {

return mapper.selectDeptById(id);

}

  @Transactional

public int delDeptById(int id) {

return mapper.delDeptById(id);

}


public List<DeptEntity> selectDeptByLike(String keyWord) {

return mapper.selectDeptByLike(keyWord);

}

}

9创建ioc容器,管理dao层和Service层的bean

启动基于classpath扫描方式管理bean的注解

<!-- 请用classpath注解 -->

<context:component-scan base-package="cn.edu360.ssm"/>

10给dao层、Service层添加注解管理及实现依赖注入+业务层添加事务

11单元测试,测试每个业务方法均能正常运行

12整合springmvc之创建springmvc配置文件

启用mvc注解、处理静态资源、配置试图解析器、配置扫描页面控制器

 <!-- 启用mvc注解 -->
    <mvc:annotation-driven />
    <!-- 静态资源 -->
    <mvc:default-servlet-handler/>
    <!-- 启用classpath扫描 -->
    <context:component-scan base-package="cn.edu360.ssm"></context:component-scan>
	<!-- ViewResolver -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp" />
	</bean>

13整合springmvc之配置前端控制器

同时可以配置springmvc的中文乱码过滤器

14整合springmvc之创建页面控制器

添加@Controller注解,Service层注入。

15加载spring的ioc容器

通过上下文参数配置需要加载的ioc容器、通过监听器加载ioc容器

<!-- 在servlet上下文中配置ioc容器文件 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext-*.xml</param-value>

</context-param>

<!-- 通过监听器加载ioc容器 -->

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

16控制器中实现id查询

/** ID查询 */

@RequestMapping("/selectDeptById")

public ModelAndView selectDeptById(int  deptno) {

ModelAndView mav=new ModelAndView();

DeptEntity dept=service.selectDeptById(deptno);

//把数据放入model中

mav.addObject("dept", dept);

mav.setViewName("detail");

return mav;

}

17查询全部

/** 查询全部 */

@RequestMapping("/selectAllDept")

public ModelAndView selectAllDept() {

ModelAndView mav=new ModelAndView();

List<DeptEntity> list=service.selectAllDept();

mav.addObject("deptList", list);

mav.setViewName("list");

return mav;

}

<body>

<div align="center">

<table>

<tr><td>部门编号</td><td>部门名称</td><td>部门地址</td><td>删除</td></tr>

<c:forEach items="${deptList}" var="dept">

<tr><td>${dept.deptno}</td><td>${dept.dname}</td><td>${dept.loc}</td><td><a href="delDeptById?deptno=${dept.deptno}">删除</a></td></tr>

</c:forEach>

</table>

</div>

</body>

18id删除

/** ID删除 */

@RequestMapping("/delDeptById")

public String delDeptById(int deptno) {

service.delDeptById(deptno);

return "forward:selectAllDept";

}

19模糊查询

/** 名称模糊查询 */

@RequestMapping("/selectDeptByLike")

public ModelAndView selectDeptByLike(String keyWord) {

ModelAndView mav=new ModelAndView();

List<DeptEntity> list=service.selectDeptByLike(keyWord);

mav.addObject("deptList", list);

mav.setViewName("list");

return mav;

}

20添加部门信息

<body>

<div align="center">

<form action="insertDeptParams" method="POST" enctype="application/x-www-form-urlencoded">

部门编号:<input type="text" name="deptno"><br>

部门名称:<input type="text" name="dname"><br>

部门地址:<input type="text" name="loc"><br>

<input type="submit"  value="添加部门">

</form>

</div>

</body>


/** 添加部门 */

@RequestMapping("/insertDeptParams")

public String insertDeptParams(DeptEntity dept) {

service.insertDeptParams(dept);

return "forward:selectAllDept";

}

21更新部门

修改list.jsp页面

<div align="center">

<table>

<tr><td>部门编号</td><td>部门名称</td><td>部门地址</td><td>删除</td></tr>

<c:forEach items="${deptList}" var="dept">

<tr><td>${dept.deptno}</td><td><a href="selectDeptById?deptno=${dept.deptno}&type=edit">${dept.dname}</a></td><td>${dept.loc}</td><td><a href="delDeptById?deptno=${dept.deptno}">删除</a></td></tr>

</c:forEach>

</table>

</div>

Id查询:

/** ID查询 */

@RequestMapping("/selectDeptById")

public ModelAndView selectDeptById(int  deptno,String type) {//type==edit 编辑 type==detail

ModelAndView mav=new ModelAndView();

DeptEntity dept=service.selectDeptById(deptno);

//把数据放入model中

mav.addObject("dept", dept);

if("detail".equals(type)) {//id查询

mav.setViewName("detail");

}

if("edit".equals(type)) {//更新

mav.setViewName("edit");

}

return mav;

}

Edit.jsp:

<body>

<div align="center">

<form action="updDeptById" method="POST" enctype="application/x-www-form-urlencoded">

<input type="hidden" name="deptno" value="${dept.deptno}"><br>

部门名称:<input type="text" name="dname" value="${dept.dname}"><br>

部门地址:<input type="text" name="loc" value="${dept.loc}"><br>

<input type="submit"  value="修改部门">

</form>

</div>

</body>

控制器:

/**更新部门信息*/

@RequestMapping("/updDeptById")

public String  updDeptById(DeptEntity dept) {

service.updDeptById(dept);

return "forward:selectAllDept";

}

猜你喜欢

转载自blog.csdn.net/fhy36897/article/details/82858787