核心的依赖关系是 core包为最基础的模块,beans包依赖core模块。aop又依赖于core和beans模块。context是一个独立的模块依赖于context-expression模块。context-support模块依赖于beans,context,core模块。tx模块依赖于beans与core, jdbc又依赖于tx。
其他的包可以自己去网上搜索下,了解一下。
Eclipse+jdk+tomcat+maven+svn
2个配置文件:spring-mybatis.xml,spring-mvc.xml
2个资源文件:jdbc.properties,log4j.properties
1.切换Catalog试一下。
2.如果切换Catalog无效:进入doc界面,执行:mvn archetype:generate,成功后(可能比较慢),重新进来,并切换Catalog,就可以了。
src/main/java
src/main/resources
src/test/java
src/test/resources
配置build path:
1)、版本号:
<properties>
<!-- spring版本号 -->
<spring.version>4.0.2.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.6</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
2)、Spring配置:
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
3)、mybatis包
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
4)、其他包
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- 格式化对象,方便输出日志 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
5)、修改build
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
6)、修改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_3_0.xsd"
version="3.0">
</web-app>
7)、修改TestSsm项目.settings目录下org.eclipse.wst.common.project.facet.core.xml文件
修改为
确认为1.8
8)、maven更新项目:
(1)点击项目,右键-》Run As-》Maven clean
(2)点击项目,右键-》maven-》Update Project....,选中项目,选择“Force Update of Snapshots/Releases”,点击“OK”
(3)重新编译TestSsm项目,选择“Project”-》“Clean”-》勾选TestSsm-》点击“Clean”,如图:
9)、编译后,可能存在以下错误:
重复操作8)可以解决报错。
jdbc.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testSsm
username=root
password=Test123456!
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
log4j.properties
#定义LOG输出级别(发布到服务器,另外控制台不输出(只输出warn或者error信息))
log4j.rootLogger=INFO,console,dailyFile
#控制台日志
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
#mybatis显示SQL语句日志配置
#打印mybatis debug日志(一般没必要)
#log4j.logger.org.mybatis=DEBUG
#log4j.logger.com.testSsm.web.mapper=DEBUG
# 定期滚动日志文件,每天都会生成日志
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.encoding=UTF-8
log4j.appender.dailyFile.Threshold=INFO
log4j.appender.dailyFile.File=D:/logs/TestSsm.log
log4j.appender.dailyFile.MaxFileSize = 5MB
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
spring-mybatis.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-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 自动扫描 -->
<context:component-scan base-package="com.testSsm.web" />
<!-- 引入配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.testSsm.web.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
spring-mvc.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-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.testSsm.web.controller" />
<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->
</list>
</property>
</bean>
<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
<?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_3_0.xsd"
version="3.0">
<display-name>Archetype Created Web Application</display-name>
<!-- Spring和mybatis的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring-mybatis.xml
</param-value>
</context-param>
<!-- 编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
SpringMVC
*.do
SpringMVC
*.html
SpringMVC
*.action
default
*.jpg
default
*.png
default
*.js
default
*.css
default
*.gif
default
*.ttf
default
*.woff
default
*.woff2
/index.jsp
到这里项目加入tomcat起始可以运行了。
新建包:
com.testSsm.web.controller
com.testSsm.web.mapper
com.testSsm.web.model
com.testSsm.web.service
com.testSsm.web.service.impl
Resources下建立mapper目录
新建schema:TestSsm
新建表Test:
CREATE TABLE `NewTable` (
`id` bigint(10) NOT NULL AUTO_INCREMENT ,
`a1` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`a2` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=4
ROW_FORMAT=COMPACT
;
新建文件:generatorConfig.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
<classPathEntry location="D:\\java\\lib\\mysql-connector-java-5.1.39.jar"/>
<!-- 一个数据库一个context -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/> <!-- 是否生成注释代时间戳-->
<property name="suppressAllComments" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 -->
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/testSsm" userId="root" password="Test123456!"></jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/> <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.testSsm.web.model" targetProject="TestSsm/src/main/java">
<!-- 是否在当前路径下新加一层schema,eg:false路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
<property name="enableSubPackages" value="true"/>
<!-- 是否针对string类型的字段在set的时候进行trim调用 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="TestSsm/src/main/resources">
<!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.testSsm.web.mapper" targetProject="TestSsm/src/main/java">
<!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<!--
tableName:指定要生成的表名,可以使用SQL通配符匹配多个表。
schema:数据库的schema,可以使用SQL通配符匹配。如果设置了该值,生成SQL的表名会变成如schema.tableName的形式。
catalog:数据库的catalog,如果设置了该值,生成SQL的表名会变成如catalog.tableName的形式。
alias:如果指定,这个值会用在生成的select查询SQL的表的别名和列名上。 列名会被别名为 alias_actualColumnName(别名_实际列名) 这种模式。
domainObjectName:生成对象的基本名称。如果没有指定,MBG会自动根据表名来生成名称。
enableXXX:XXX代表多种SQL方法,该属性用来指定是否生成对应的XXX语句。
selectByPrimaryKeyQueryId:DBA跟踪工具会用到,具体请看详细文档。
selectByExampleQueryId:DBA跟踪工具会用到,具体请看详细文档。
modelType:和<context>的defaultModelType含义一样,这里可以针对表进行配置,这里的配置会覆盖<context>的defaultModelType配置。
escapeWildcards:这个属性表示当查询列,是否对schema和表名中的SQL通配符 ('_' and '%') 进行转义。 对于某些驱动当schema或表名中包含SQL通配符时(例如,一个表名是MY_TABLE,有一些驱动需要将下划线进行转义)是必须的。默认值是false。
delimitIdentifiers:是否给标识符增加**分隔符**。默认false。当catalog,schema或tableName中包含空白时,默认为true。
delimitAllColumns:是否对所有列添加**分隔符**。默认false。
该元素包含多个可用的<property>子元素,可选属性为:
constructorBased:和<javaModelGenerator>中的属性含义一样。
ignoreQualifiersAtRuntime:生成的SQL中的表名将不会包含schema和catalog前缀。
immutable:和<javaModelGenerator>中的属性含义一样。
modelOnly:此属性用于配置是否为表只生成实体类。如果设置为true就不会有Mapper接口。如果配置了<sqlMapGenerator>,并且modelOnly为true,那么XML映射文件中只有实体对象的映射元素(<resultMap>)。如果为true还会覆盖属性中的enableXXX方法,将不会生成任何CRUD方法。
rootClass:和<javaModelGenerator>中的属性含义一样。
rootInterface:和<javaClientGenerator>中的属性含义一样。
runtimeCatalog:运行时的catalog,当生成表和运行环境的表的catalog不一样的时候可以使用该属性进行配置。
runtimeSchema:运行时的schema,当生成表和运行环境的表的schema不一样的时候可以使用该属性进行配置。
runtimeTableName:运行时的tableName,当生成表和运行环境的表的tableName不一样的时候可以使用该属性进行配置。
selectAllOrderByClause:该属性值会追加到selectAll方法后的SQL中,会直接跟order by拼接后添加到SQL末尾。
useActualColumnNames:如果设置为true,那么MBG会使用从数据库元数据获取的列名作为生成的实体对象的属性。 如果为false(默认值),MGB将会尝试将返回的名称转换为驼峰形式。 在这两种情况下,可以通过 元素显示指定,在这种情况下将会忽略这个(useActualColumnNames)属性。
useColumnIndexes:如果是true,MBG生成resultMaps的时候会使用列的索引,而不是结果中列名的顺序。
useCompoundPropertyNames:如果是true,那么MBG生成属性名的时候会将列名和列备注接起来. 这对于那些通过第四代语言自动生成列(例如:FLD22237),但是备注包含有用信息(例如:"customer id")的数据库来说很有用. 在这种情况下,MBG会生成属性名FLD2237_CustomerId。
除了<property>子元素外,<table>还包含以下子元素:
<generatedKey> (0个或1个)
<columnRenamingRule> (0个或1个)
<columnOverride> (0个或多个)
<ignoreColumn> (0个或多个)
-->
<table tableName="test" domainObjectName="Test" ></table>
</context>
</generatorConfiguration>
自动生成代码:
generatorConfig.xml文件,确认数据库可以链接,数据表已经建立;
在xml中根据注解配置好了以后,直接右键,选择generator就可以生成代码。
在Test.java后面增加如下代码:输出Test的String
public String getTestString() {
return "{" + "id:" + id
+ "," + "a1:" + a1
+ "," + "a2:" + a2 + "}";
}
修改TestMapper.xml文件中的insertSelective方法,在后面增加,插入后返回主键,如下图
<insert id="insertSelective" parameterType="com.testSsm.web.model.Test">
<!-- 获取最近一次插入记录的主键值的方式 -->
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() as id
</selectKey>
insert into test
<trim prefix="(" suffix=")" suffixOverrides=",">
编写service接口和实现类:
package com.testSsm.web.service;
import com.testSsm.web.model.Test;
public interface TestService {
/**
* 根据ID查询Test
* @param id
* @return Test
*/
public Test getTestById(long id);
/**
* 插入保存Test
* @param Test
* @return void
*/
public long insert(Test test);
/**
* 根据ID更新Test
* @param Test
* @return void
*/
public void updateByPrimaryKeySelective(Test test);
/**
* 根据ID删除
* @param id
* @return void
*/
public void deleteByPrimaryKey(long id);
}
package com.testSsm.web.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.testSsm.web.mapper.TestMapper;
import com.testSsm.web.model.Test;
import com.testSsm.web.service.TestService;
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TestMapper testMapper;
/**
* 根据ID查询Test
* @param id
* @return Test
*/
@Override
public Test getTestById(long id) {
return testMapper.selectByPrimaryKey(id);
}
/**
* 插入保存Test
* @param Test
* @return void
*/
@Override
public long insert(Test test) {
testMapper.insertSelective(test);
return test.getId();
}
/**
* 根据ID更新Test
* @param Test
* @return void
*/
@Override
public void updateByPrimaryKeySelective(Test test) {
testMapper.updateByPrimaryKeySelective(test);
}
/**
* 根据ID删除
* @param id
* @return void
*/
@Override
public void deleteByPrimaryKey(long id) {
testMapper.deleteByPrimaryKey(id);
}
}
package com.testSsm.web.controller;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.testSsm.web.model.Test;
import com.testSsm.web.service.TestService;
@Controller
@RequestMapping("test")
public class TestController {
private Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
private TestService testService;
/**
* 根据id返回test信息
* @param request
* @param model
* @return
*/
@RequestMapping("showDetail")
public String showDetail(HttpServletRequest request, @RequestParam(required = false, defaultValue = "0")long id, Model model){
logger.info("开始执行方式:showDetail");
if(id == 0) {
model.addAttribute("context", "出错,输入的id为空");
}else {
Test test = testService.getTestById(id);
if(test == null)
model.addAttribute("context", "不存在id="+ id + "的记录");
else
model.addAttribute("context", test.getTestString());
}
return "test/message";
}
/**
* 插入test信息
* @param request
* @param test
* @param model
* @return
*/
@RequestMapping("insert")
public String insert(HttpServletRequest request, Test test, Model model){
logger.info("开始执行方式:insert");
long id = testService.insert(test);
model.addAttribute("id", id);
model.addAttribute("context", "插入成功,返回主键:id="+id);
return "test/message";
}
/**
* 更新test信息
* @param request
* @param test
* @param model
* @return
*/
@RequestMapping("update")
public String update(HttpServletRequest request, Test test, Model model){
logger.info("开始执行方式:update");
Test testParam = testService.getTestById(test.getId());
if(testParam == null) {
model.addAttribute("context", "更新失败,id="+test.getId() +"不存在");
}else {
testService.updateByPrimaryKeySelective(test);
model.addAttribute("context", "更新成功");
}
return "test/messsage";
}
/**
* 根据id删除test信息
* @param request
* @param id
* @param model
* @return
*/
@RequestMapping("delete")
public String delete(HttpServletRequest request, @RequestParam(required = false, defaultValue = "0")Long id, Model model){
logger.info("开始执行方式:delete");
Test testParam = testService.getTestById(id);
if(testParam == null) {
model.addAttribute("updateState", "0");
model.addAttribute("context", "删除失败,id="+id +"不存在");
}else {
testService.deleteByPrimaryKey(id);
model.addAttribute("isNull", "1");
model.addAttribute("context", "删除成功");
}
return "test/messsage";
}
}
新建目录WEB-INF/jsp/test,在下面添加message.jsp文件,如图:
添加jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE>
<html>
<head>
<title>测试</title>
</head>
<body>
${context}
</body>
</html>
启动项目,在控制台查看日志,都没有报错,返回结果如下,表示启动成功:
web.xml中配置了三种请求方式:.do、.html、.action;我们下面以.do为例
1)、测试insert:
执行:http://localhost:8080/TestSsm/test/insert.do?a1=0000&a2=1111,返回主键
2)、测试showDetail:
执行:http://localhost:8080/TestSsm/test/showDetail.do
执行:http://localhost:8080/TestSsm/test/showDetail.do?id=1
执行:http://localhost:8080/TestSsm/test/showDetail.do?id=27
3)、测试update:
执行:http://localhost:8080/TestSsm/test/update.do?id=27&a1=9999
执行:http://localhost:8080/TestSsm/test/showDetail.do?id=27
3)、测试delete:
执行:http://localhost:8080/TestSsm/test/delete.do?id=27
执行:http://localhost:8080/TestSsm/test/showDetail.do?id=27
到此SSM框架搭建完成