关于ssm的复习总结

ssm项目的操作流程

(1) 新建Maven项目,选择webapp模板
(2) 修改目录

(3) 修改pom文件,添加依赖
(4) 添加jdbc.properties文件

(5) 添加SqlMapConfig.xml文件(模板)

<?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>
    <!--设置日志输出语句,显示相应操作的sql语名-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

(6) 添加applicationContext_mapper.xml文件(数据访问层)

<!--    读取属性文件-->

<context:property-placeholder location="classpath:jdbc.properties"/>

<!--    配置数据源-->
<bean  id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
</bean>

<!--    配置SqlSessionFactoryBean-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--    配置数据源-->
    <property name="dataSource" ref="dataSource"></property>
    <!--配置sqlMapConfig核心配置文件-->
    <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
    <!--    注册实体类-->
    <property name="typeAliasesPackage" value="com.meng.pojo"/>
</bean>

<!--    注册mapper.xml文件-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.meng.mapper"></property>
</bean>

(7) 添加applicationContext_service.xml文件(业务逻辑层)

<!--    添加包扫描-->


    <context:component-scan base-package="com.meng.service.impl"/>


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

<!--    配置事务切面-->
<tx:advice id="myadvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*select*" read-only="true"/>
        <tx:method name="*search*" read-only="true"/>
        <tx:method name="*find*" read-only="true"/>
        <tx:method name="*get*" read-only="true"/>
        <tx:method name="*insert*" read-only="true"/>
        <tx:method name="*add*" read-only="true"/>
        <tx:method name="*save*" read-only="true"/>
        <tx:method name="*set*" read-only="true"/>
        <tx:method name="*update*" propagation="REQUIRED"/>
        <tx:method name="*change*" propagation="REQUIRED"/>
        <tx:method name="*modify*" propagation="REQUIRED"/>
        <tx:method name="*delete*" propagation="REQUIRED"/>
        <tx:method name="*drop*" propagation="REQUIRED"/>
        <tx:method name="*remove*" propagation="REQUIRED"/>
        <tx:method name="*clear*" propagation="REQUIRED"/>
        <tx:method name="*delete*" propagation="REQUIRED"/>
        <tx:method name="*" propagation="SUPPORTS"/>
    </tx:attributes>

</tx:advice>

<!--    配置事务切入点+绑定-->
    <aop:config>
        <aop:pointcut id="mycut"  expression="execution(* com.meng.service.impl.*.*(..))"/>
        <aop:advisor advice-ref="myadvice" pointcut-ref="mycut"/>
    </aop:config>

(8) 添加springmvc.xml文件

<!--    添加包扫描-->
    <context:component-scan base-package="com.meng.controller"/>
    <context:component-scan base-package="com.meng.service.impl"/>

<!--    添加注解驱动-->
    <mvc:annotation-driven></mvc:annotation-driven>

<!--    ajax请求不需要视图解析器-->

(9) 删除并重新添加web.xml文件,设置中文编码,注册springmvc框架,注册spring框架

<!--   配置中文乱码过滤器
    private String encoding;
    private boolean forceRequestEncoding;
    private boolean forceResponseEncoding;
-->
    <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>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param><init-param>
            <param-name>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>myfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

<!--    配置springmvc-->
    <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:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


<!--    注册spring框架-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext_*.xml</param-value>
    </context-param>

项目配置完成
(10) 新建实体类User(跟数据库保持一致)

(11) 新建UserMapper.java接口文件
(12) 新建UserMapper.xml实现增删改查所有功能

<!--完成实体类与表中列名的映射-->
    <resultMap id="usermap" type="user">
        <id property="userId" column="user_id"/>
        <result property="cardType" column="card_type"/>
        <result property="cardNo" column="card_no"/>
        <result property="userName" column="user_name"/>
        <result property="userSex" column="user_sex"/>
        <result property="userAge" column="user_age"/>
        <result property="userRole" column="user_role"/>
    </resultMap>

    <!--    定义全部列名-->

    <sql id="allColumns">
        user_id,card_type,card_no,user_name,user_sex,user_age,user_role
    </sql>

    <!--    //根据条件分页获取分页数据
        List<User> selectUserPage(
                @Param("userName")
                String userName,
                @Param("userSex")
                String userSex,
                @Param("startRow")
                int startRow
        );
    -->

    <select id="selectUserPage" resultMap="usermap">
        select <include refid="allColumns"></include>
        from user
        <where>
            <if test="userName != null and userName != ''">
                and user_name like concat('%',#{userName},'%')
            </if>
            <if test="userSex != null and userSex != ''">
                and user_sex = #{userSex}
            </if>

        </where>
        limit #{startRow},5
    </select>


    <!--
        插入操作
        int createUsercreateUser(User user);
    -->
    <insert id="createUsercreateUser" parameterType="user">
        insert into user
        values (#{userId}, #{cardType}, #{cardNo}, #{userName},
                #{userSex}, #{userAge}, #{userRole})
    </insert>

    <!--
        删除操作
        int deleteUserById(String userId);
    -->

    <delete id="deleteUserById" parameterType="String">
        delete
        from user
        where user_id = #{userId}
    </delete>


    <!--    统计总行数
      int getRowCount(
                @Param("userName")
                String userName,
                @Param("userSex")
                String userSex
        );
    -->
    <select id="getRowCount" resultType="int">
        select count(*)
        from user
        <where>
            <if test="userName!=null and userName!='' ">
                and user_name like concat('%',#{userName},'%')
            </if>
            <if test="userSex!=null and userSex != '' ">
                and user_sex = #{userSex}
            </if>
        </where>
    </select>

    <!--    更新    int updateUserById(User user);-->
    <update id="updateUserById" parameterType="user">
        update user
        set card_type = #{cardType},
            card_no   = #{cardNo},
            user_name = #{userName},
            user_sex  = #{userSex},
            user_age  = #{userAge},
            user_role= #{userRole}
        where user_id = #{userId};

    </update>

(13) 新建Service接口和实现类

@Autowired
UserMapper userMapper;//数据访问层对象
@Override
public List<User> selectUserPage(String userName, String userSex, int startRow) {
    return userMapper.selectUserPage(userName,userSex,startRow);
}

@Override
public int getRowCount(String userName, String userSex) {
    return userMapper.getRowCount(userName,userSex);
}

@Override
public int deleteUserById(String userId) {
    return userMapper.deleteUserById(userId);
}

@Override
public int createUser(User user) {
    return userMapper.createUsercreateUser(user);
}

@Override
public int updateUserById(User user) {
    return userMapper.updateUserById(user);
}

(14) 新建测试类,完成所有功能的测试

@RunWith(SpringJUnit4ClassRunner.class) //启动spring容器
@ContextConfiguration(locations = {"classpath:applicationContext_mapper.xml",
        "classpath:appliicationContext_service.xml"})

public class MyTest {

    @Autowired
    UserService service;
    @Test
    public void testselectUserPage() {
        List<User> users = service.selectUserPage("李", "男", 0);
        users.forEach(user -> {
            System.out.println(user);
        });
    }

//测试总行数
    @Test
    public void testgetRowCount() {
        int count = service.getRowCount(null, "女");
        System.out.println(count);
    }

//    根据用户id删除用户
    @Test
    public void testdeleteUserById() {
        int i = service.deleteUserById("15968162346981977");
        System.out.println("删除成功!!!!");

    }

(15) 新建控制器,完成所有功能

@CrossOrigin     //支持跨域访问
@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserService userService;
    public final static int PAGESIZE = 5;
    //  /user/selectUserPage?userName=z&userSex=男&page=null
//    1.分页查询
    @ResponseBody
    @RequestMapping("/selectUserPage")
    List<User> selectUserPage(String userName, String userSex, Integer page) {
        int startRow = 0;
        if (page != null) {
            startRow = (page - 1) * PAGESIZE;
        }
        return userService.selectUserPage(userName, userSex, startRow);
    }

//    2.获取总行数 /user/getRowCount?userName=z&userSex=男
    @RequestMapping("/getRowCount")
    @ResponseBody
    int getRowCount(String userName,String userSex) {
        return userService.getRowCount(userName, userSex);
    }

//    3.根据id删除用户user/ deleteUserById?userId= 15968162087363060
    @RequestMapping("/deleteUserById")
    @ResponseBody
    int deleteUserById(String userId) {
        return userService.deleteUserById(userId);
    }

    //    4.增加用户 /user/createUser(参数见下面)
    @RequestMapping("/createUser")
    @ResponseBody
    int createUser(User user) {
        String uId = System.currentTimeMillis() + "";
        user.setUserId(uId);
        return userService.createUser(user);
    }


    //5. 更新用户 /user/updateUserById(参数见以下)

    @RequestMapping("/updateUserById")
    @ResponseBody
    int updateUserById(User user) {
       return userService.updateUserById(user);
    }
}

(16) 浏览器测试功能
(17) 接入前端项目测试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臨鱼羡上天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值