SSM框架整合详解

1、导包

Spring         Spring MVC      mybatis

包:spring   springMVCshuju

2、配置文件

Spring 核心配置文件

Spring配置文件

mybatis配置文件

映射文件

db.properties

log4j.properties

ModelAndView:自动跳转页面

3、框架架构


 UserController.java

package cn.hd.controller;

import cn.hd.entity.User;
import cn.hd.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

@Controller
public class UserController {

    @Resource(name = "userServiceImpl")
    private UserService userService;

    @RequestMapping("/login.action")
    public ModelAndView login(){
        User userById = userService.getUserById(1);
        System.out.println(userById);
        ModelAndView mav = new ModelAndView();
        mav.setViewName("/index.jsp");
        return mav;
    }

    @RequestMapping("/add")
    public void add(){
        User user = new User();
        //user.setId(7);
        user.setName("张三");
        user.setAddress("河南");
        user.setBalance(20000);
        user.setSex("男");
        Integer row = userService.addUser(user);
        System.out.println(row);
    }

    @RequestMapping("/updateUser")
    public void updateUser(){
        User user = new User();
        user.setId(7);
        user.setName("李四");
        user.setAddress("河南");
        user.setBalance(20000);
        user.setSex("男");
        Integer row = userService.updateUser(user);
        System.out.println(row);
    }
}

User.java——》entity

package cn.hd.controller;

import cn.hd.entity.User;
import cn.hd.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

@Controller
public class UserController {

    @Resource(name = "userServiceImpl")
    private UserService userService;

    @RequestMapping("/login.action")
    public ModelAndView login(){
        User userById = userService.getUserById(1);
        System.out.println(userById);
        ModelAndView mav = new ModelAndView();
        mav.setViewName("/index.jsp");
        return mav;
    }

    @RequestMapping("/add")
    public void add(){
        User user = new User();
        //user.setId(7);
        user.setName("张三");
        user.setAddress("河南");
        user.setBalance(20000);
        user.setSex("男");
        Integer row = userService.addUser(user);
        System.out.println(row);
    }

    @RequestMapping("/updateUser")
    public void updateUser(){
        User user = new User();
        user.setId(7);
        user.setName("李四");
        user.setAddress("河南");
        user.setBalance(20000);
        user.setSex("男");
        Integer row = userService.updateUser(user);
        System.out.println(row);
    }
}
UserMapper

package cn.hd.mapper;

import cn.hd.entity.User;
import cn.hd.query_vo.QueryVo;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {

    User findUserById(Integer id);
    Integer addUser(QueryVo vo);
    Integer updateUser(QueryVo vo);
}

UserMapper.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="cn.hd.mapper.UserMapper">
    
    <select id="findUserById" parameterType="int" resultType="user">
        SELECT * FROM t_user WHERE id = #{id}
    </select>

    <insert id="addUser" parameterType="queryVo">
        INSERT INTO
        t_user(name,sex,address,balance)
        VALUES (#{user.name},#{user.sex},#{user.address},#{user.balance})
    </insert>
    <update id="updateUser" parameterType="queryVo">
    UPDATE t_user
    <set>
        <if test="user.name !=null and user.name != ''">
            name = #{user.name},
        </if>
        <if test="user.balance !=null and user.balance != ''">
            balance=#{user.balance},
        </if>
        <if test="user.sex !=null and user.sex != ''">
            sex=#{user.sex},
        </if>
        <if test="user.address !=null and user.address != ''">
            address=#{user.address} ,
        </if>
    </set>
    <where>
        id = #{user.id}
    </where>
    </update>
</mapper>

QueryVo

package cn.hd.query_vo;

import cn.hd.entity.User;

import java.util.List;

public class QueryVo {
    private User user;
    private List<User> list;

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "QueryVo{" +
                "user=" + user +
                ", list=" + list +
                '}';
    }
}

UserService

package cn.hd.service;

import cn.hd.entity.User;

public interface UserService {
    User getUserById(Integer id);
    Integer addUser(User user);
    Integer updateUser(User user);
}

UserServiceImpl

package cn.hd.service.impl;

import cn.hd.entity.User;
import cn.hd.mapper.UserMapper;
import cn.hd.query_vo.QueryVo;
import cn.hd.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserServiceImpl implements UserService {
    @Resource(name = "userMapper")
    private UserMapper userMapper;
    @Override
    public User getUserById(Integer id) {
        User user = userMapper.findUserById(id);
        return user;
    }

    @Override
    public Integer addUser(User user) {
        QueryVo v = new QueryVo();
        v.setUser(user);
        Integer row = userMapper.addUser(v);
        return row;
    }

    @Override
    public Integer updateUser(User user) {
        QueryVo v = new QueryVo();
        v.setUser(user);
        user.setBalance(10000);
        Integer row = userMapper.updateUser(v);
//        int i = 1/0;
//        user.setBalance(1000);
//        v.setUser(user);
//        userMapper.updateUser(v);
        return row;
    }
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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:aop="http://www.springframework.org/schema/aop"
       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/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
        <!--读取db.properties-->
        <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>

        <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
               <property name="driverClass" value="${jdbc.driver}"></property>
               <property name="jdbcUrl" value="${jdbc.url}"></property>
               <property name="user" value="${jdbc.username}"></property>
               <property name="password" value="${jdbc.password}"></property>
       </bean>
        <bean name="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                <property name="dataSource" ref="dataSource"></property>
                <!--读取sqlMapperConfig.xml-->
                <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
        </bean>

        <!--自动扫描包下面的所有Mapper,当出现多个Mapper时,不用多次书写bean-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <property name="basePackage" value="cn.hd.mapper"></property>
        </bean>
        <!--开启注解-->
        <context:component-scan base-package="cn.hd"></context:component-scan>

        <!--配置事务-->
        <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!--配置事务通知-->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="add*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="persist*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="delete*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="remove*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="update*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="modify*" read-only="false" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="get*" read-only="true" propagation="REQUIRED" isolation="DEFAULT"/>
                <tx:method name="find*" read-only="true" propagation="REQUIRED" isolation="DEFAULT"/>
            </tx:attributes>
        </tx:advice>
        <!--将事务织入到目标对象-->
        <aop:config>
            <aop:pointcut id="txPc" expression="execution(* cn.hd.service.impl.*ServiceImpl.*(..))"></aop:pointcut>
            <aop:advisor pointcut-ref="txPc" advice-ref="txAdvice"></aop:advisor>
        </aop:config>
</beans>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&amp;characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

log4j.properties

# Global logging configuration
#在开发环境下日志级别设置为debug,生产环境下设置成info或error
#log4j.rootLogger=DEBUG, stdout
# Console output...
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c,%L] - %m%n

SpringMVC.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

        <!--开启注解模式-->
        <context:component-scan base-package="cn.hd.controller"></context:component-scan>
        <!--配置数据转换器-->
        <mvc:annotation-driven>
                <mvc:message-converters>
                        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                </mvc:message-converters>
        </mvc:annotation-driven>
</beans>

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>
    <!--起别名,扫描包-->
    <typeAliases>
        <package name="cn.hd.entity"></package>
        <package name="cn.hd.query_vo"></package>
    </typeAliases>

    <mappers>
        <package name="cn.hd.mapper"></package>
    </mappers>
</configuration>


发布了88 篇原创文章 · 获赞 383 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/weixin_42047611/article/details/81035245