美文网首页
SSM整合方式一

SSM整合方式一

作者: 神豪VS勇士赢 | 来源:发表于2018-08-11 23:16 被阅读17次

整合步骤
1,根据需求做设计(数据库设计)
2,搭建环境( POM引入包)
3,创建Mybatis映射文件和实体类
4,手动开发DAO接口和实现类或自动生成mapper-dao接口
5,创建Service接口和实现类
6,编写SpringMVC的action
7,Spring整合Mybatis配置(+服务层)
8,Spring整合SpringMVC配置(+web.xml)

开发流程:
三大框架整合SSM
第一步:根据需求做设计
概要设计(需求写文档,产品经理)
详细设计(接口设计)
数据库设计文档

CREATE TABLE t_user_info (
u_id bigint(20) NOT NULL AUTO_INCREMENT,
u_name varchar(255) NOT NULL,
u_pass varchar(255) DEFAULT NULL,
PRIMARY KEY (u_id)
) ENGINE=InnoDB AUTO_INCREMENT=149 DEFAULT CHARSET=utf8;

第二步:搭建环境,导入依赖
线下环境(项目,JDK,web容器,分布式缓存,数据库)
线上环境(整个链路)

一定要注意线上以及线下的环境的统一
mysql,mybatis,插件,dbcp,log4j,spring(包含SpringMVC),jackson,文件上传,jsp,jstl

注意:
特别要注意 resources 插件配置 这个不配置 会遇到 资源文件找不到的错误 (这是个坑)

第三步:创建 Mybatis的映射文件和实体类

注意:
不生成DAO,不生成Example,手动模式写。

第四步:开发持久层(DAO接口和实现类)

自定义开发需要extends SqlSessionDaoSupport
org.mybatis.spring.support.SqlSessionDaoSupport
this.getSqlSession()…(注入: sqlSessionFactory)
org.mybatis.spring.SqlSessionFactoryBean

public interface UserInfoDao{

void addUserInfo(UserInfo userInfo);
void deleteUserInfoById(Long aLong);
void UpdateUserInfo(UserInfo userInfo);
UserInfo queryUserInfoById(Long aLong);
List<UserInfo> queryUserInfoByPage(Integer index, Integer size);
List<UserInfo> queryAllUserInfo();

}

public class UserInfoDaoImpl extends SqlSessionDaoSupport implements UserInfoDao {

@Override
public void addUserInfo(UserInfo userInfo) {
    getSqlSession().insert("com.zyh.mapper.UserInfoMapper.insert",userInfo);
}

@Override
public void deleteUserInfoById(Long aLong) {
    getSqlSession().delete("com.zyh.mapper.UserInfoMapper.deleteByPrimaryKey",aLong);
}

@Override
public void UpdateUserInfo(UserInfo userInfo) {
    getSqlSession().update("com.zyh.mapper.UserInfoMapper.updateByPrimaryKeySelective",userInfo);
}

@Override
public UserInfo queryUserInfoById(Long aLong) {
    return  getSqlSession().selectOne("com.zyh.mapper.UserInfoMapper.selectByPrimaryKey",aLong);
}

@Override
public List<UserInfo> queryUserInfoByPage(Integer index, Integer size) {
    Map<String,Integer> stringIntegerMap=new HashMap<>();
    stringIntegerMap.put("index", index);
    stringIntegerMap.put("size",size);
    return getSqlSession().selectList("com.zyh.mapper.UserInfoMapper.selectByPage",stringIntegerMap);
}

@Override
public List<UserInfo> queryAllUserInfo() {
    return getSqlSession().selectList("com.zyh.mapper.UserInfoMapper.selectAll");
}

}

第五步:开发服务层(接口+实现类)

public interface UserInfoService{
void addUserInfo(UserInfo userInfo);
void deleteUserInfoById(Long aLong);
void UpdateUserInfo(UserInfo userInfo);
UserInfo queryUserInfoById(Long aLong);
List<UserInfo> queryUserInfoByPage(Integer index,Integer size);
List<UserInfo> queryAllUserInfo();
}

public class UserInfoServiceImpl implements UserInfoService {

private UserInfoDao userInfoDao;

public void setUserInfoDao(UserInfoDao userInfoDao) {
    this.userInfoDao = userInfoDao;
}

@Override
public void addUserInfo(UserInfo userInfo) {
    userInfoDao.addUserInfo(userInfo);
}

@Override
public void deleteUserInfoById(Long aLong) {
    userInfoDao.deleteUserInfoById(aLong);
}

@Override
public void UpdateUserInfo(UserInfo userInfo) {
    userInfoDao.UpdateUserInfo(userInfo);
}

@Override
public UserInfo queryUserInfoById(Long aLong) {

    return  userInfoDao.queryUserInfoById(aLong);
}

@Override
public List<UserInfo> queryUserInfoByPage(Integer index, Integer size) {

    return userInfoDao.queryUserInfoByPage(index,size);
}

@Override
public List<UserInfo> queryAllUserInfo() {

    return userInfoDao.queryAllUserInfo();
}

}

这里注意查询部分 我们可以创建DTO 做一个实体类与 界面实体的传输实体 DTO

第六步:开发表现层
使用注解方式

@Controller
public class UserInfoController {
@Autowired
private UserInfoService userInfoService;
@RequestMapping("/list.do")
public String listUserInfos(Model model){
List<UserInfo> userInfos = userInfoService.queryUserInfoByPage(0, 5);
model.addAttribute("userInfos",userInfos);
return "/userInfos.jsp";
}
}

第七步:整合持久层配置

数据源:org.apache.commons.dbcp.BasicDataSource

Mybatis操作数据库事务,使用Spring 的JDBC事务控制类。
org.springframework.jdbc.datasource.DataSourceTransactionManager

<!--配置dbcp数据源-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/testmybatis01?characterEncoding=utf-8"></property>
    <property name="username" value="root"></property>
    <property name="password" value="zyh"></property>
    <property name="maxActive" value="30"></property>
    <property name="maxWait" value="3000"></property>
</bean>

<!-- 2,创建SqlSessionFactory ,由Spring提供 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 思考mybatis的核心配置部分:数据源,注册实体 -->
    <property name="dataSource" ref="dataSource"></property>
    <!-- 注册实体,模糊匹配多个mapper映射文件-->
    <property name="mapperLocations" value="classpath:com/zyh/mapper/*Mapper.xml"></property>
</bean>

<bean id="userInfoDao" class="com.zyh.dao.impl.UserInfoDaoImpl">
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>

<bean id="userInfoService" class="com.zyh.service.impl.UserInfoServiceImpl">
    <property name="userInfoDao" ref="userInfoDao"></property>
</bean>
<!--5 事物管理通知类-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 6,定义事务通知切面,让事务应用到具体的方法 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!--希望哪些方法需要应用到事务 -->
        <tx:method name="add*" propagation="REQUIRED"/>
        <tx:method name="delete*" propagation="REQUIRED"/>
        <tx:method name="Update*" propagation="REQUIRED"/>
        <tx:method name="query*"  read-only="true"/>
    </tx:attributes>
</tx:advice>


<!-- 7,AOP编程:让切入点和通知关联形成切面 -->
<aop:config>
    <aop:pointcut id="myPoint" expression="execution( * com.zyh.service.*.*(..))"></aop:pointcut>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myPoint"></aop:advisor>
</aop:config>

<!-- 整合表现层配置 -->
<!-- 8,注解的处理器映射器和适配器 -->
<mvc:annotation-driven></mvc:annotation-driven>

<!-- 9视图解析器:逻辑视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

<!-- 10扫描 Controller-->
<context:component-scan base-package="com.zyh.controller"></context:component-scan>

第八步 :配置中央控制器 以及 过滤器 web.xml
<filter>
<filter-name>myfilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

相关文章

  • SSM 框架整合

    原始整合方式 数据表create database ssm character set utf8;use ssm;...

  • SSM整合方式一

    整合步骤1,根据需求做设计(数据库设计)2,搭建环境( POM引入包)3,创建Mybatis映射文件和实体类4,手...

  • 12|第十二课:SSM整合

    一、SSM整合 SSM整合: Spring --- SpringMVC --- MyBatis (一)、Sprin...

  • 整合SSM

    SSM整合 整合思路 各自搭建SSM环境 使用Spring整合Mybatis 使用Spring整合SpringMV...

  • SSM整合

    SSM整合 目标 熟练整合SSM 使用SSM环境进行增删改查 项目结构 一、创建数据库 CREATE DATABA...

  • SpringMVC框架学习1:SSM 整合开发、SpringMV

    SSM 整合开发 SSM 编程,即 SpringMVC + Spring + MyBatis 整合,是当前最为流行...

  • SSM整合方式二

    SSM框架整合二第一步:根据需求做设计 CREATE TABLE t_user_info (u_id bigint...

  • SpringBoot 整合Mybatis、Mysql自定义数据源

    SpringBoot、Mybatis、Mysql整合,此SSM不是彼SSM,使用SpringBoot组件,整合My...

  • SSM框架整合

    SSM框架整合 1.1 原始方式整合 1.准备工作 2.创建Maven工程 3.导入Maven坐标 参考:素材/配...

  • 22.SSM整合

    一、整合流程 创建工程 SSM整合 SpringSpringConfig MyBatisMybatisConfig...

网友评论

      本文标题:SSM整合方式一

      本文链接:https://www.haomeiwen.com/subject/qtejbftx.html