当前位置 : 主页 > 编程语言 > java >

快速搭建SSM框架(Maven)五步曲的方法步骤

来源:互联网 收集:自由互联 发布时间:2021-05-13
项目完整搭建链接:https://gitee.com/DaNanHai04/ssm_parent.git 第一步 创建一个父工程: 导入父工程的pom坐标: dependencies !--spring核心-- dependency groupIdorg.springframework/groupId artifactIdspring-context/a

项目完整搭建链接:https://gitee.com/DaNanHai04/ssm_parent.git

第一步 创建一个父工程:

导入父工程的pom坐标:

<dependencies>
 <!--spring核心-->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.0.2.RELEASE</version>
 </dependency>
 
 <!--spring-webmvc-->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.0.2.RELEASE</version>
 </dependency>
 
 <!--spring-jdbc支持、spring-tx事务支持、aspectj 支持-->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.0.2.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>5.0.2.RELEASE</version>
 </dependency>
 <dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.8.7</version>
 </dependency>
 
 <!--spring-test-->
 <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>5.0.2.RELEASE</version>
 </dependency>
 
 <!--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.1</version>
 </dependency>
 
 <!--数据库驱动包、连接池-->
 <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.30</version>
 </dependency>
 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.10</version>
 </dependency>
 
 <!-- fastJSON -->
 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.56</version>
 </dependency>
 
 <!-- jstl 支持包-->
 <dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
 </dependency>
 
 <!--log4j、junit测试支持-->
 <dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
 </dependency>
 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
 </dependency>
 
</dependencies>

第二步 创建ssm_pojo子模块(mybatis逆向这里不做赘述,直接将生成好的复制即可)

创建实体类TbBrand实体类

package com.itcode.pojo;
 
import java.io.Serializable;
 
public class TbBrand implements Serializable {
  private Long id;
 
  private String name;
 
  private String firstChar;
  
  //此处省略get/set方法以及toString方法

创建TbBrandExample条件类 

package com.itcode.pojo;
 
import java.util.ArrayList;
import java.util.List;
 
public class TbBrandExample {
  protected String orderByClause;
 
  protected boolean distinct;
 
  protected List<Criteria> oredCriteria;
 
  public TbBrandExample() {
    oredCriteria = new ArrayList<Criteria>();
  }
 
  public void setOrderByClause(String orderByClause) {
    this.orderByClause = orderByClause;
  }
 
  public String getOrderByClause() {
    return orderByClause;
  }
 
  public void setDistinct(boolean distinct) {
    this.distinct = distinct;
  }
 
  public boolean isDistinct() {
    return distinct;
  }
 
  public List<Criteria> getOredCriteria() {
    return oredCriteria;
  }
 
  public void or(Criteria criteria) {
    oredCriteria.add(criteria);
  }
 
  public Criteria or() {
    Criteria criteria = createCriteriaInternal();
    oredCriteria.add(criteria);
    return criteria;
  }
 
  public Criteria createCriteria() {
    Criteria criteria = createCriteriaInternal();
    if (oredCriteria.size() == 0) {
      oredCriteria.add(criteria);
    }
    return criteria;
  }
 
  protected Criteria createCriteriaInternal() {
    Criteria criteria = new Criteria();
    return criteria;
  }
 
  public void clear() {
    oredCriteria.clear();
    orderByClause = null;
    distinct = false;
  }
 
  protected abstract static class GeneratedCriteria {
    protected List<Criterion> criteria;
 
    protected GeneratedCriteria() {
      super();
      criteria = new ArrayList<Criterion>();
    }
 
    public boolean isValid() {
      return criteria.size() > 0;
    }
 
    public List<Criterion> getAllCriteria() {
      return criteria;
    }
 
    public List<Criterion> getCriteria() {
      return criteria;
    }
 
    protected void addCriterion(String condition) {
      if (condition == null) {
        throw new RuntimeException("Value for condition cannot be null");
      }
      criteria.add(new Criterion(condition));
    }
 
    protected void addCriterion(String condition, Object value, String property) {
      if (value == null) {
        throw new RuntimeException("Value for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value));
    }
 
    protected void addCriterion(String condition, Object value1, Object value2, String property) {
      if (value1 == null || value2 == null) {
        throw new RuntimeException("Between values for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value1, value2));
    }
 
    public Criteria andIdIsNull() {
      addCriterion("id is null");
      return (Criteria) this;
    }
 
    public Criteria andIdIsNotNull() {
      addCriterion("id is not null");
      return (Criteria) this;
    }
 
    public Criteria andIdEqualTo(Long value) {
      addCriterion("id =", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdNotEqualTo(Long value) {
      addCriterion("id <>", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdGreaterThan(Long value) {
      addCriterion("id >", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdGreaterThanOrEqualTo(Long value) {
      addCriterion("id >=", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdLessThan(Long value) {
      addCriterion("id <", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdLessThanOrEqualTo(Long value) {
      addCriterion("id <=", value, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdIn(List<Long> values) {
      addCriterion("id in", values, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdNotIn(List<Long> values) {
      addCriterion("id not in", values, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdBetween(Long value1, Long value2) {
      addCriterion("id between", value1, value2, "id");
      return (Criteria) this;
    }
 
    public Criteria andIdNotBetween(Long value1, Long value2) {
      addCriterion("id not between", value1, value2, "id");
      return (Criteria) this;
    }
 
    public Criteria andNameIsNull() {
      addCriterion("name is null");
      return (Criteria) this;
    }
 
    public Criteria andNameIsNotNull() {
      addCriterion("name is not null");
      return (Criteria) this;
    }
 
    public Criteria andNameEqualTo(String value) {
      addCriterion("name =", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameNotEqualTo(String value) {
      addCriterion("name <>", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameGreaterThan(String value) {
      addCriterion("name >", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameGreaterThanOrEqualTo(String value) {
      addCriterion("name >=", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameLessThan(String value) {
      addCriterion("name <", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameLessThanOrEqualTo(String value) {
      addCriterion("name <=", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameLike(String value) {
      addCriterion("name like", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameNotLike(String value) {
      addCriterion("name not like", value, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameIn(List<String> values) {
      addCriterion("name in", values, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameNotIn(List<String> values) {
      addCriterion("name not in", values, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameBetween(String value1, String value2) {
      addCriterion("name between", value1, value2, "name");
      return (Criteria) this;
    }
 
    public Criteria andNameNotBetween(String value1, String value2) {
      addCriterion("name not between", value1, value2, "name");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharIsNull() {
      addCriterion("first_char is null");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharIsNotNull() {
      addCriterion("first_char is not null");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharEqualTo(String value) {
      addCriterion("first_char =", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharNotEqualTo(String value) {
      addCriterion("first_char <>", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharGreaterThan(String value) {
      addCriterion("first_char >", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharGreaterThanOrEqualTo(String value) {
      addCriterion("first_char >=", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharLessThan(String value) {
      addCriterion("first_char <", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharLessThanOrEqualTo(String value) {
      addCriterion("first_char <=", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharLike(String value) {
      addCriterion("first_char like", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharNotLike(String value) {
      addCriterion("first_char not like", value, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharIn(List<String> values) {
      addCriterion("first_char in", values, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharNotIn(List<String> values) {
      addCriterion("first_char not in", values, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharBetween(String value1, String value2) {
      addCriterion("first_char between", value1, value2, "firstChar");
      return (Criteria) this;
    }
 
    public Criteria andFirstCharNotBetween(String value1, String value2) {
      addCriterion("first_char not between", value1, value2, "firstChar");
      return (Criteria) this;
    }
  }
 
  public static class Criteria extends GeneratedCriteria {
 
    protected Criteria() {
      super();
    }
  }
 
  public static class Criterion {
    private String condition;
 
    private Object value;
 
    private Object secondValue;
 
    private boolean noValue;
 
    private boolean singleValue;
 
    private boolean betweenValue;
 
    private boolean listValue;
 
    private String typeHandler;
 
    public String getCondition() {
      return condition;
    }
 
    public Object getValue() {
      return value;
    }
 
    public Object getSecondValue() {
      return secondValue;
    }
 
    public boolean isNoValue() {
      return noValue;
    }
 
    public boolean isSingleValue() {
      return singleValue;
    }
 
    public boolean isBetweenValue() {
      return betweenValue;
    }
 
    public boolean isListValue() {
      return listValue;
    }
 
    public String getTypeHandler() {
      return typeHandler;
    }
 
    protected Criterion(String condition) {
      super();
      this.condition = condition;
      this.typeHandler = null;
      this.noValue = true;
    }
 
    protected Criterion(String condition, Object value, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.typeHandler = typeHandler;
      if (value instanceof List<?>) {
        this.listValue = true;
      } else {
        this.singleValue = true;
      }
    }
 
    protected Criterion(String condition, Object value) {
      this(condition, value, null);
    }
 
    protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.secondValue = secondValue;
      this.typeHandler = typeHandler;
      this.betweenValue = true;
    }
 
    protected Criterion(String condition, Object value, Object secondValue) {
      this(condition, value, secondValue, null);
    }
  }
}

创建一个Result返回通知类

package com.itcode.pojo;
 
import java.io.Serializable;
 
 
public class Result implements Serializable {
  private boolean success; //判断该变量
  private String message; //返回的字符串
 
  public Result(boolean success, String message) {
    this.success = success;
    this.message = message;
  }
  //此处省略get/set方法,自行补全

第三步 创建ssm_dao子模块(逆向工程也可以生成)

创建TbBrandMapper接口类

package com.itcode.dao;
 
import com.itcode.pojo.TbBrand;
import com.itcode.pojo.TbBrandExample;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
import java.util.Map;
 
public interface TbBrandMapper {
  int countByExample(TbBrandExample example);
 
  int deleteByExample(TbBrandExample example);
 
  int deleteByPrimaryKey(Long id);
 
  int insert(TbBrand record);
 
  int insertSelective(TbBrand record);
 
  List<TbBrand> selectByExample(TbBrandExample example);
 
  TbBrand selectByPrimaryKey(Long id);
 
  int updateByExampleSelective(@Param("record") TbBrand record, @Param("example") TbBrandExample example);
 
  int updateByExample(@Param("record") TbBrand record, @Param("example") TbBrandExample example);
 
  int updateByPrimaryKeySelective(TbBrand record);
 
  int updateByPrimaryKey(TbBrand record);
 
  List<Map> selectOptionList();
}

创建TbBrandMapper.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.itcode.dao.TbBrandMapper" >
 <resultMap id="BaseResultMap" type="com.itcode.pojo.TbBrand" >
  <id column="id" property="id" jdbcType="BIGINT" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="first_char" property="firstChar" jdbcType="VARCHAR" />
 </resultMap>
 <sql id="Example_Where_Clause" >
  <where >
   <foreach collection="oredCriteria" item="criteria" separator="or" >
    <if test="criteria.valid" >
     <trim prefix="(" suffix=")" prefixOverrides="and" >
      <foreach collection="criteria.criteria" item="criterion" >
       <choose >
        <when test="criterion.noValue" >
         and ${criterion.condition}
        </when>
        <when test="criterion.singleValue" >
         and ${criterion.condition} #{criterion.value}
        </when>
        <when test="criterion.betweenValue" >
         and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
        </when>
        <when test="criterion.listValue" >
         and ${criterion.condition}
         <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
          #{listItem}
         </foreach>
        </when>
       </choose>
      </foreach>
     </trim>
    </if>
   </foreach>
  </where>
 </sql>
 <sql id="Update_By_Example_Where_Clause" >
  <where >
   <foreach collection="example.oredCriteria" item="criteria" separator="or" >
    <if test="criteria.valid" >
     <trim prefix="(" suffix=")" prefixOverrides="and" >
      <foreach collection="criteria.criteria" item="criterion" >
       <choose >
        <when test="criterion.noValue" >
         and ${criterion.condition}
        </when>
        <when test="criterion.singleValue" >
         and ${criterion.condition} #{criterion.value}
        </when>
        <when test="criterion.betweenValue" >
         and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
        </when>
        <when test="criterion.listValue" >
         and ${criterion.condition}
         <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
          #{listItem}
         </foreach>
        </when>
       </choose>
      </foreach>
     </trim>
    </if>
   </foreach>
  </where>
 </sql>
 <sql id="Base_Column_List" >
  id, name, first_char
 </sql>
 <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.itcode.pojo.TbBrandExample" >
  select
  <if test="distinct" >
   distinct
  </if>
  <include refid="Base_Column_List" />
  from tb_brand
  <if test="_parameter != null" >
   <include refid="Example_Where_Clause" />
  </if>
  <if test="orderByClause != null" >
   order by ${orderByClause}
  </if>
 </select>
 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
  select 
  <include refid="Base_Column_List" />
  from tb_brand
  where id = #{id,jdbcType=BIGINT}
 </select>
 <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
  delete from tb_brand
  where id = #{id,jdbcType=BIGINT}
 </delete>
 <delete id="deleteByExample" parameterType="com.itcode.pojo.TbBrandExample" >
  delete from tb_brand
  <if test="_parameter != null" >
   <include refid="Example_Where_Clause" />
  </if>
 </delete>
 <insert id="insert" parameterType="com.itcode.pojo.TbBrand" >
  insert into tb_brand (id, name, first_char
   )
  values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{firstChar,jdbcType=VARCHAR}
   )
 </insert>
 <insert id="insertSelective" parameterType="com.itcode.pojo.TbBrand" >
  insert into tb_brand
  <trim prefix="(" suffix=")" suffixOverrides="," >
   <if test="id != null" >
    id,
   </if>
   <if test="name != null" >
    name,
   </if>
   <if test="firstChar != null" >
    first_char,
   </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides="," >
   <if test="id != null" >
    #{id,jdbcType=BIGINT},
   </if>
   <if test="name != null" >
    #{name,jdbcType=VARCHAR},
   </if>
   <if test="firstChar != null" >
    #{firstChar,jdbcType=VARCHAR},
   </if>
  </trim>
 </insert>
 <select id="countByExample" parameterType="com.itcode.pojo.TbBrandExample" resultType="java.lang.Integer" >
  select count(*) from tb_brand
  <if test="_parameter != null" >
   <include refid="Example_Where_Clause" />
  </if>
 </select>
 <update id="updateByExampleSelective" parameterType="map" >
  update tb_brand
  <set >
   <if test="record.id != null" >
    id = #{record.id,jdbcType=BIGINT},
   </if>
   <if test="record.name != null" >
    name = #{record.name,jdbcType=VARCHAR},
   </if>
   <if test="record.firstChar != null" >
    first_char = #{record.firstChar,jdbcType=VARCHAR},
   </if>
  </set>
  <if test="_parameter != null" >
   <include refid="Update_By_Example_Where_Clause" />
  </if>
 </update>
 <update id="updateByExample" parameterType="map" >
  update tb_brand
  set id = #{record.id,jdbcType=BIGINT},
   name = #{record.name,jdbcType=VARCHAR},
   first_char = #{record.firstChar,jdbcType=VARCHAR}
  <if test="_parameter != null" >
   <include refid="Update_By_Example_Where_Clause" />
  </if>
 </update>
 <update id="updateByPrimaryKeySelective" parameterType="com.itcode.pojo.TbBrand" >
  update tb_brand
  <set >
   <if test="name != null" >
    name = #{name,jdbcType=VARCHAR},
   </if>
   <if test="firstChar != null" >
    first_char = #{firstChar,jdbcType=VARCHAR},
   </if>
  </set>
  where id = #{id,jdbcType=BIGINT}
 </update>
 <update id="updateByPrimaryKey" parameterType="com.itcode.pojo.TbBrand" >
  update tb_brand
  set name = #{name,jdbcType=VARCHAR},
   first_char = #{firstChar,jdbcType=VARCHAR}
  where id = #{id,jdbcType=BIGINT}
 </update>
 <select id="selectOptionList" resultType="java.util.Map">
   select id,name as text from tb_brand
 </select>
 
</mapper>

第四步 创建ssm_service子模块

创建一个service接口

package com.itcode.service;
 
import com.itcode.pojo.TbBrand;
 
import java.util.List;
 
public interface BrandService {
  List<TbBrand> findAll();
 
  void insert(TbBrand brand);
}

创建一个service的实现类

package com.itcode.service.impl;
 
import com.itcode.dao.TbBrandMapper;
import com.itcode.pojo.TbBrand;
import com.itcode.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
@Service
@Transactional
public class BrandServiceImpl implements BrandService {
  @Autowired
  private TbBrandMapper tbBrandDao;
  @Override
  public List<TbBrand> findAll() {
    return tbBrandDao.selectByExample(null);
  }
 
  @Override
  public void insert(TbBrand brand) {
    tbBrandDao.insert(brand);
  }
}

jdbc.properties配置(在resource中配置)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf-8
jdbc.username=用户名
jdbc.password=密码

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"
    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">
 
  <!--1.注解扫描: 只扫描service包。-->
  <context:component-scan base-package="com.itcode.service"/>
 
  <!--2. 加载properties-->
  <context:property-placeholder location="classpath:jdbc.properties"/>
 
  <!--3. 创建连接池-->
  <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
  </bean>
 
  <!--4. Spring整合Mybatis:把SqlSessionFactory对象的创建交给Spring完成-->
  <bean class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!--<property name="mapperLocations" value="classpath:com/itcode/dao/TbBrandMapper.xml"/>-->
  </bean>
 
  <!--5. 扫描dao的接口所在包,自动对该包下所有的dao接口自动生成代理对象-->
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.itcode.dao"/>
  </bean>
 
  <!--6. 事务管理器 -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
 
  <!--7. 开启事务控制的注解支持 -->
  <tx:annotation-driven transaction-manager="transactionManager"/>
 
  <!--以下配置请忽略只是为了回顾用-->
  <!--此处是第二种方式 Spring声明式事务管理配置-->
  <!--6.1 事务管理器
  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
  </bean>
   6.2 事务通知规则
  <tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
      <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
      <tx:method name="*" propagation="REQUIRED" read-only="false"/>
    </tx:attributes>
  </tx:advice>
   6.3 Aop配置 = 切入点表达式 + 通知规则的引用
  <aop:config>
    <aop:pointcut id="pt" expression="execution(* com..*ServiceImpl.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
  </aop:config>  -->
</beans>

第五步 创建一个ssm_web子模块

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
 
  <!-- 解决post乱码 -->
  <filter>
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 
  <!--SpringMVC前端控制器-->
  <servlet>
    <servlet-name>dispatcherServlet</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>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
 
  <!--配置监听器,加载applicationContext.xml配置文件-->
  <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>
</web-app>

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: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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
  <!--1. 注解扫描: 之扫描controller包下的注解-->
  <context:component-scan base-package="com.itcode.controller"/>
 
  <!--2. 注解驱动,controller返回值支持json-->
  <mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
      <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
        <property name="supportedMediaTypes" value="application/json"/>
        <property name="features">
          <array>
            <value>WriteMapNullValue</value>
            <value>WriteDateUseDateFormat</value>
          </array>
        </property>
      </bean>
    </mvc:message-converters>
  </mvc:annotation-driven>
</beans>

创建一个BrandController类

package com.itcode.controller; 
import com.itcode.pojo.Result;
import com.itcode.pojo.TbBrand;
import com.itcode.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.List;
 
@RestController
@RequestMapping("/brand")
public class BrandController {
 
  @Autowired
  private BrandService brandService;
 
  @RequestMapping("/findAll")
  public List<TbBrand> findAll(){
    return brandService.findAll();
  }
 
  @RequestMapping("/insert")
  public Result insert(@RequestBody TbBrand brand){
    try {
      brandService.insert(brand);
      return new Result(true, "新增成功");
    } catch (Exception e) {
      e.printStackTrace();
      return new Result(false, "新增失败");
    }
  }
}

最后配置一下tomcat,启动tomcat可以了,如果想要测试我们的接口可以使用Postman进行测试。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

网友评论