基于maven的spring-struts2-mybatis(注解版)环境搭建 对spring中常用注解进行详细说明 包含图片上传 ajax发送异步请求 select标签详细案例

本文档详细介绍了基于Maven的Spring-Struts2-Mybatis注解版环境搭建过程,包括配置文件如pom.xml、jdbc.properties、applicationContext.xml、web.xml和log4j.properties的设置。此外,还涵盖了实体类、Dao接口及Mapper.xml的编写,Service接口及其实现类,以及Action和Struts2.xml配置。同时,文档提供了文件上传和Ajax异步请求的实现案例。
摘要由CSDN通过智能技术生成
引言

所用版本:jdk1.8 tomcat7.88 
所用数据库:mysql
所用技术:maven-spring4.3.2-struts2-mybatis-ajax 基于注解版
//主要实现 两张表 增删改查 包含图片上传 ajax发送异步请求 主要对 select标签 有详细案例

本案例中用到的常用注解总结如下:
1.实体类上:
@Component此注解表示 创建简单对象 默认构建的简单对象名称(ID值)为类名首字母小写
2.service 实现类上:
   加到类上 
 @Service 自动创建service实现类对象
 @Transactional 进行事务控制 书写在类上表示本类中所有的方法都加事务( 增删改 默认)

  加到方法上表示:方法上的事务覆盖类上的
  @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
  表示查询 时将事务级别设置为 readOnly = true 只读属性
  (propagation = Propagation.SUPPORTS 外部没有事务不开启事务
    作用:提高查询效率
3.action类上:
@Controller 作用 生成Action对象 默认为类名首字母小写
@Scope("prototype") 作用 控制对象创建的次数  表示多例 (struts2中表示多列)

4.@Autowired 表示自动注入 由spring框架提供 所创建的接口实现类对象 (取代get和set方法)
5.@Resource 表示自动注入 由java默认提供
1环境搭建 导入依赖 pom.xml文件
 <name>SSMAnotation Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- 引入javaEE规范 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <!-- 引入spring相关的jar -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>4.3.2.RELEASE</version>
    </dependency>

    <!-- 引入mybatis相关jar -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>

    <!-- 引入mybatis 与 spring 整合jar -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!-- 引入struts2 -->
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.3.16</version>
    </dependency>

    <!--  引入struts2 与spring的整合jar -->
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-spring-plugin</artifactId>
      <version>2.3.16</version>
    </dependency>

    <!-- 引入mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <!-- 引入dbcp -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>

    <!-- 引入fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>


    <!-- 引入log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.15</version>
    </dependency>

    <!--引入jstl标签-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>


  </dependencies>

  <build>
    <finalName>SSMAnotation</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

2.小配置文件 jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ems_spring1
name=root
password=root
3.spring 配置文件 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">

    <!--开启注解扫描 告知Spring在哪一个包下使用了注解-->
    <context:component-scan base-package="com.baizhi.*"></context:component-scan>

    <!--读取小配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <!--配置数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>${driver}</value>
        </property>
        <property name="url">
            <value>${url}</value>
        </property>
        <property name="username">
            <value>${name}</value>
        </property>
        <property name="password">
            <value>${password}</value>
        </property>
    </bean>

    <!--创建SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>

        <!--起别名-->
        <property name="typeAliasesPackage">
            <value>com.baizhi.entity</value>
        </property>
        <!--Mapper文件注册-->
        <property name="mapperLocations">
            <list>
                <value>classpath:com/baizhi/dao/*Mapper.xml</value>
            </list>
        </property>
    </bean>

    <!--创建DAO实现类对象-->
    <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage">
            <value>com.baizhi.dao</value>
        </property>
    </bean>
    
    <!--激活@Transactional-->
     <!--引入控制事务的相关代码-->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <property name="dataSource" ref="dataSource"></property>
     </bean>
    <!--激活-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

4. web.xml
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<!--读取spring(applicationContext.xml)配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!--配置Struts的核心过滤器-->
  <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>
  <!--配置Spring的监听工厂-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>

5.log4j.properties
log4j.rootLogger = ERROR,bb
log4j.appender.bb = org.apache.log4j.ConsoleAppender
log4j.appender.bb.layout = org.apache.log4j.PatternLayout
log4j.appender.bb.layout.conversionPattern =  %d{yyyy-MM-dd} %t  %c [%p] %m%n
log4j.logger.com.baizhi.dao = DEBUG
log4j.logger.com.baizhi.service = DEBUG
log4j.logger.org.springframework.jdbc = DEBUG

6 写实体 (建表省略)
//运用注解开发

//第一张表 部门表
package com.baizhi.entity;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
 * 部门表的实体类
 *  @Component此注解表示 创建简单对象 默认构建的简单对象名称(ID值)为类名首字母小写
 * */
@Component   
public class Department implements Serializable {
   
    private Integer id;
    //部门编号
    private String identifier;
    private String name;
   //此处 get/set,有参无参,toString 省略
}

//第二种表 员工表
package com.baizhi.entity;

import org.springframework.stereotype.Component;

import java.io.Serializable;

/**
 * 库表 emp 对应的实体类
 * @Component此注解表示 创建简单对象 默认构建的简单对象名称(ID值)为类名首字母小写
 * */
@Component
public class Emp implements Serializable {
   
    private Integer id;
    private String code;
    private String name;
    private double salary;
    private Integer age;
    //关系属性 部门id
    private Integer department_id;
    //封装部门对象 做表连接查询结果展示
    private  Department department;
 //此处 get/set,有参无参,toString 省略
}
7写Dao接口
7.1 部门表 对应接口
package com.baizhi.dao;
import com.baizhi.entity.Department;
import java.util.List;
public interface DepartmentDao {
   
    //插入一条数据
    public void saveDepartment(Department department);
    //展示所有部门信息
    public List<Department> selectDepartmentAll();
    //根据id查询一个对象
    public  Department selectByIdDepartment(Department department);
    //根据id修改一条数据
    public void uadataByIdDepartment(Department department);
}

7.2员工表 对应接口
package com.baizhi.dao;
import com.baizhi.entity.Emp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface EmpDao {
   
    //根据部门id展示所有员工信息
    public List<Emp> selectEmpAll(@Param ("department_id") Integer            department_id,@Param ("did") Integer did);
    //插入一条数据
    public void savaEmp(Emp emp);
    //根据id删除一条员工信息
    public void  deleteByIdEmp(Emp emp);
    //根据 id查询一条员工信息
    public  Emp selectByIdEmp(Emp emp);
    //根据id修改一条员工信息
    public void updateByIdEmp(Emp emp);
}
8 写 Mapper.xml (实现Dao接口)
8.1 部门表 接口 对应的实现

文件名为:DepartmentDaoMapper.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.baizhi.dao.DepartmentDao">
    <!-- 插入一条数据-->
    <insert id="saveDepartment" parameterType="Department">
      insert into department (identifier,name) values(#{
   identifier},#{
   name})
    </insert>
    <!--展示所有信息-->
    <select id="selectDepartmentAll" resultType="Department">
        select * from department
    </select>
    <!--根据id查询一个对象-->
    <select id="selectByIdDepartment" resultType="Department">
        select * from department where id = #{
   id}
    </select>
    <!--根据id修改一条数据-->
    <update id="uadataByIdDepartment" parameterType="Department">
        update department set identifier =#{
   identifier},name=#{
   name} where id = #{
   id}
    </update>
</mapper>
8.2 员工表 接口 对应的实现

文件名为:EmpDaoMapper.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.baizhi.dao.EmpDao">
    <!-- 插入一条数据-->
    <insert id="savaEmp" parameterType="Emp">
      insert into emp (code,name,salary,age,department_id)
      values(#{
   code},#{
   name},#{
   salary},#{
   age},#{
   department_id})
    </insert>
    <resultMap id="map" type="Emp">
        <id property="id" column="eid"></id>
        <result property="code" column="code"></result>
        <result property="name" column=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值