SSM(spring.struts2.mybatis)整合开发步骤

SSM(struts2-spring-mybatis)整合开发步骤

1.引入依赖jar

spring、mybatis、struts2、mybatis-spring、struts2-spring-plugin、mybatis|oracle、druid、fastjson、log4j、servlet-api、jstl等

2.SM整合

①创建数据表

[外链图片转存失败(img-vVmUvapO-1563077015317)(C:\Users\15620\Desktop\2019-07-14_112341.jpg)]

②创建实体类

public class User {
    private String id;
    private String name;
    private Integer age;
    private Date bir;

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", bir=" + bir +
                '}';
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBir() {
        return bir;
    }

    public void setBir(Date bir) {
        this.bir = bir;
    }

    public User() {
    }

    public User(String id, String name, Integer age, Date bir) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.bir = bir;
    }
}

③创建DAO接口

public interface UserDAO {
    //展示所有
    List<User> selectAll();
    //添加用户
    void insert(User user);
}

④书写mapper.xml文件

<?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="com.XX.dao.UserDAO">
    <select id="selectAll" resultType="User">
        select id,name,age,bir from user
    </select>
    <insert id="insert">
        insert into user values(#{id},#{name},#{age},#{bir})
    </insert>
</mapper>

⑤创建service

public interface UserService {
    //展示所有的用户
    List<User> showAll();
    //添加用户
    void add(User user);
}

⑥创建serviceImpl实现service,声明DAO依赖

public class UserServiceImpl  implements  UserService{
    //依赖
    private UserDAO userDAO;

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    @Override
    public List<User> showAll() {
        List<User> users = userDAO.selectAll();
        return users;
    }

    @Override
    public void add(User user) {
        user.setId(UUID.randomUUID().toString());
        userDAO.insert(user);
    }
}

⑦书写spring.xml配置文件

1).创建数据源对象(记忆:数据库配置信息),使用DruidDataSources
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
</bean>
2).创建sqlsessionfactory(记忆:mybatis_config.xml的信息),使用SqlSessionFactory,注入数据源,mapperlocations,也可以起别名
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations"                           value="classpath:com/XXX/mapper/UserDAOMapper.xml"/>
        <property name="typeAliasesPackage" value="com.XXX.entity"/>
</bean>
<!--注意:
       mapper文件的位置格式为“classpath:XX.XX.XX”
       起别名时指定文件路径的value内格式为“XX.XX.XX”. -->
3).创建DAO对象,使用MapperScannerConfigurer,注入数据源,basePackage
<bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.baizhi.dao"/>
</bean>
<!--注意:指定dao文件路径时value内格式为“XX.XX.XX”-->
4).创建事务管理器(管理service层业务)使用DataSourceTransactionManager,注入数据源
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
        <property name="dataSource" ref="dataSource"/>
</bean>
5)tx:advice将事务管理器转化为环绕通知,tx:method配置细粒度
<tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*"/>
            <tx:method name="showAll*" propagation="SUPPORTS"/>
        </tx:attributes>
</tx:advice>
<!--注意:事务可以指定多种属性,包括:propagation()用来控制传播属性、Isolation(用来控制隔离级别)、timeout(用来设置超时性)、rollback-for(用来设置什么异常回滚) 、norollback-for(用来设置什么异常不会滚) 、readonly(用来设置事务读写性)。一般不需要设置属性,使用默认值即可。对于查询方法建议设置:propagation="SUPPORTS"-->
6)管理service对象的创建
<bean id="userService" class="com.XX.service.UserServiceImpl">
        <property name="userDAO" ref="userDAO"/>
</bean>
7)配置aop(即指定service方法中那些会进行事务管理)
<aop:config>
        <aop:pointcut id="pc" expression="within(com.baizhi.service.*ServiceImpl)"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
<!--aop:pointcut定义切点,expression指定了具体的位置,expression中使用within或execution指定位置。within可以指定到具体的一个类,execution可以指定到具体的方法-->

3.ss整合

①配置web.xml包括:核心过滤器,contextparam,listener

<!--  配置全局参数-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
<!--  配置核心过滤器-->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
<!--  配置监听器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

②配置spring.xml,管理action

<bean class="com.baizhi.action.UserAction" id="userAction" scope="prototype">
        <property name="userService" ref="userService"/>
</bean>

③配置struts.xml

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

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="user" extends="struts-default" namespace="/user">
        <action name="showAll" class="userAction" method="showAll">
            <result>/showAll.jsp</result>
        </action>
        <action name="add" class="userAction" method="add">
            <result type="redirectAction">showAll</result>
        </action>
    </package>
</struts>
<!--注意:由于action现在交给spring工厂创建管理,struts.xml中class不再是action的全限定名而是首字母小写-->
showAll ```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值