- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringMVC mybatis整合实例代码详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .
1、逆向工程生成基础信息 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<?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>
<context id=
"testTables"
targetRuntime=
"MyBatis3"
>
<commentGenerator>
<!-- 是否去除自动生成的注释
true
:是 :
false
:否 -->
<property name=
"suppressAllComments"
value=
"true"
/>
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass=
"com.mysql.jdbc.Driver"
connectionURL=
"jdbc:mysql://localhost:3307/mybatis"
userId=
"root"
passaspku.com/pc/softtech/office/word/
" target="
_blank
"><u>word</u>="
jalja">
</jdbcConnection>
<!-- 默认
false
,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为
true
时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name=
"forceBigDecimals"
value=
"false"
/>
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage=
"com.jalja.springmvc_mybatis.model.pojo"
targetProject=
".\src"
>
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name=
"enableSubPackages"
value=
"false"
/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name=
"trimStrings"
value=
"true"
/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage=
"com.jalja.springmvc_mybatis.mapper"
targetProject=
".\src"
>
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name=
"enableSubPackages"
value=
"false"
/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type=
"XMLMAPPER"
targetPackage=
"com.jalja.springmvc_mybatis.mapper"
targetProject=
".\src"
>
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name=
"enableSubPackages"
value=
"false"
/>
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName=
"items"
></table>
<table tableName=
"orders"
></table>
<table tableName=
"orderdetail"
></table>
<table tableName=
"user"
></table>
</context>
</generatorConfiguration>
public
static
void
main(String[] arhs)
throws
Exception{
List<String> warnings =
new
ArrayList<String>();
boolean
overwrite =
true
;
File configFile =
new
File(
"src.main.resources/generator.xml"
);
ConfigurationParser cp =
new
ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback =
new
DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator =
new
MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(
null
);
}
|
2、springMVC与Mybatis整合 各个配置文件 。
1.项目结构 。
2、各个文件的核心代码 。
a.web.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<web-app xmlns=
"http://java.sun.com/xml/ns/javaee"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:
//java.sun.com/xml/ns/javaee
http:
//java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value> classpath:spring/applicationContext-*.xml </param-value>
</context-param>
<listener>
<listener-
class
>org.springframework.web.context.ContextLoaderListener</listener-
class
>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>
3000
</param-value>
</context-param>
<listener>
<listener-
class
>org.springframework.web.util.Log4jConfigListener</listener-
class
>
</listener>
<!-- post请求乱码 -->
<filter>
<filter-name>SpringEncodingFilter</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>SpringEncodingFilter</filter-name>
<url-pattern>*.
do
</url-pattern>
</filter-mapping>
<!-- springMvc前端控制器 -->
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-
class
>org.springframework.web.servlet.DispatcherServlet</servlet-
class
>
<init-param>
<!--
contextConfigLocation加载 springMvc的配置文件(处理器适配器 ,映射器)
如果不配置默认加载的是 /WEB-INF/servlet名称-servlet.xml(springMvc-servlet.xml)
-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<!--
1
、*.
do
:DispatcherServlet 解析所有 *.
do
结尾的访问
2
、 / :DispatcherServlet解析所有请求(包括静态资源) 这种配置可以实现restful风格的url
3
、/*: 这种配置最终要转发到一个jsp页面
-->
<url-pattern>*.
do
</url-pattern>
</servlet-mapping>
<!-- springMvc前端控制器 RestFul
<servlet>
<servlet-name>springMvc_rest</servlet-name>
<servlet-
class
>org.springframework.web.servlet.DispatcherServlet</servlet-
class
>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-springmvc.xml</param-value>
</init-param>
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc_rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
-->
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
|
b、config/mybatis/applicationContext-mybatis.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<?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>
<!--
各个属性
properties:
setting(全局配置参数配置):mybatis运行时可以调整一些运行参数 例如:开启二级缓存、开启延迟加载
typeAliases(类型别名): 在mapper.xml中定义parameterType 参数类型 resultType 返回类型时
需要指定类型的路径 不方便开发,我们开一针对 这些类型给其指定别名
typeHandler(类型处理器):在mybatis 中是通过typeHandler 完成 jdbc类型与java类型的转化 ,mybatis 提供的处理器已可满足 开发需求
objectFactory(对象工厂):
plugins(插件):
environments(环境集合属性对象):
environment(环境子属性对象):
transactionManager(事务管理):
dataSource(数据源):
mappers(映射器):
-->
<!-- 对事务的管理和连接池的配置 -->
<!-- 延迟加载 -->
<settings>
<!-- 打开延迟加载 -->
<setting name=
"lazyLoadingEnabled"
value=
"true"
/>
<!-- 积极加载改为消极加载 -->
<setting name=
"aggressiveLazyLoading"
value=
"false"
/>
<!-- 开启二级缓存 -->
<setting name=
"cacheEnabled"
value=
"true"
/>
</settings>
<typeAliases>
<!-- 针对单个别名定义 -->
<!-- <typeAlias type=
"com.jalja.myBatis.model.User"
alias=
"user"
/> -->
<!--批量别名的定义 mybatis 自动扫描包中的类 别名就是类名(首字母大小写都可以) -->
<
package
name=
"com.jalja.springmvc_mybatis.model.pojo"
/>
<
package
name=
"com.jalja.springmvc_mybatis.model.custom"
/>
<
package
name=
"com.jalja.springmvc_mybatis.model.vo"
/>
</typeAliases>
<!--加载映射文件 -->
<!-- <mappers> <mapper resource=
"com/jalja/spring_mybatis/mapper/UserMapper.xml"
/> -->
<!-- 和spring整合后 可以去掉
<
package
name=
"com.jalja.spring_mybatis.mapper"
/> </mappers>-->
</configuration>
|
c、config/spring/applicationContext-dao.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:aop=
"http://www.springframework.org/schema/aop"
xmlns:cache=
"http://www.springframework.org/schema/cache"
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:mvc=
"http://www.springframework.org/schema/mvc"
xmlns:tx=
"http://www.springframework.org/schema/tx"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:
//www.springframework.org/schema/aop
http:
//www.springframework.org/schema/aop/spring-aop-3.2.xsd
http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-3.2.xsd
http:
//www.springframework.org/schema/context
http:
//www.springframework.org/schema/context/spring-context-3.2.xsd
http:
//www.springframework.org/schema/mvc
http:
//www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http:
//www.springframework.org/schema/tx
http:
//www.springframework.org/schema/tx/spring-tx-3.2.xsd
http:
//www.springframework.org/schema/cache
http:
//www.springframework.org/schema/cache/spring-cache-3.2.xsd">
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location=
"classpath:jdbc.properties"
/>
<!-- 对JDBC配置进行解密
<bean id=
"propertyConfigurer"
class
=
"cn.com.sinobpo.project.wfjb.utils.EncryptablePropertyPlaceholderConfigurer"
>
<property name=
"locations"
>
<list>
<value>classpath:resources/config/jdbc.properties</value>
</list>
</property>
</bean> -->
<bean id=
"dataSource"
class
=
"org.apache.commons.dbcp.BasicDataSource"
destroy-method=
"close"
>
<property name=
"driverClassName"
>
<value>${jdbc_driverClassName}</value>
</property>
<property name=
"url"
>
<value>${jdbc_url}</value>
</property>
<property name=
"username"
>
<value>${jdbc_username}</value>
</property>
<property name=
"password"
>
<value>${jdbc_password}</value>
</property>
<!-- 连接池最大使用连接数 -->
<property name=
"maxActive"
>
<value>
20
</value>
</property>
<!-- 初始化连接大小 -->
<property name=
"initialSize"
>
<value>
1
</value>
</property>
<!-- 获取连接最大等待时间 -->
<property name=
"maxWait"
>
<value>
60000
</value>
</property>
<!-- 连接池最大空闲 -->
<property name=
"maxIdle"
>
<value>
20
</value>
</property>
<!-- 连接池最小空闲 -->
<property name=
"minIdle"
>
<value>
3
</value>
</property>
<!-- 自动清除无用连接 -->
<property name=
"removeAbandoned"
>
<value>
true
</value>
</property>
<!-- 清除无用连接的等待时间 -->
<property name=
"removeAbandonedTimeout"
>
<value>
180
</value>
</property>
<!-- 连接属性 -->
<property name=
"connectionProperties"
>
<value>clientEncoding=UTF-
8
</value>
</property>
</bean>
<!-- spring和MyBatis完美整合 -->
<bean id=
"sqlSessionFactory"
class
=
"org.mybatis.spring.SqlSessionFactoryBean"
>
<property name=
"dataSource"
ref=
"dataSource"
/>
<property name=
"configLocation"
value=
"classpath:mybatis/applicationContext-mybatis.xml"
/>
</bean>
<!--使用 mapper 代理 的方式 mapper扫描器 -->
<bean
class
=
"org.mybatis.spring.mapper.MapperScannerConfigurer"
>
<!-- 扫描包路径 如果需要扫描多个包 ,中间使用半角逗号隔开 -->
<property name=
"basePackage"
value=
"com.jalja.springmvc_mybatis.mapper"
/>
<property name=
"sqlSessionFactoryBeanName"
value=
"sqlSessionFactory"
/>
</bean>
<!--声明式 事务管理 使用jdbc的事务管理 -->
<bean id=
"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=
"update*"
propagation=
"REQUIRED"
/>
<tx:method name=
"save*"
propagation=
"REQUIRED"
/>
<tx:method name=
"delete*"
propagation=
"REQUIRED"
/>
<tx:method name=
"get*"
propagation=
"SUPPORTS"
read-only=
"true"
/>
<tx:method name=
"find*"
propagation=
"SUPPORTS"
read-only=
"true"
/>
</tx:attributes>
</tx:advice>
<!-- 配置事务的切点,并把事务切点和事务属性不关联起来AOP -->
<aop:config>
<aop:advisor advice-ref=
"txAdvice"
pointcut=
"execution(* com.jalja.springmvc_mybatis.service.impl.*.*(..))"
/>
</aop:config>
</beans>
|
d、config/spring/applicationContext-service.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:aop=
"http://www.springframework.org/schema/aop"
xmlns:cache=
"http://www.springframework.org/schema/cache"
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:mvc=
"http://www.springframework.org/schema/mvc"
xmlns:tx=
"http://www.springframework.org/schema/tx"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:
//www.springframework.org/schema/aop
http:
//www.springframework.org/schema/aop/spring-aop-3.2.xsd
http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-3.2.xsd
http:
//www.springframework.org/schema/context
http:
//www.springframework.org/schema/context/spring-context-3.2.xsd
http:
//www.springframework.org/schema/mvc
http:
//www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http:
//www.springframework.org/schema/tx
http:
//www.springframework.org/schema/tx/spring-tx-3.2.xsd
http:
//www.springframework.org/schema/cache
http:
//www.springframework.org/schema/cache/spring-cache-3.2.xsd">
<bean id=
"itemsService"
class
=
"com.jalja.springmvc_mybatis.service.impl.ItemsServiceImpl"
></bean>
</beans>
|
e、config/spring/springmvc.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:aop=
"http://www.springframework.org/schema/aop"
xmlns:cache=
"http://www.springframework.org/schema/cache"
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:mvc=
"http://www.springframework.org/schema/mvc"
xmlns:tx=
"http://www.springframework.org/schema/tx"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:
//www.springframework.org/schema/aop
http:
//www.springframework.org/schema/aop/spring-aop-3.0.xsd
http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd
http:
//www.springframework.org/schema/context
http:
//www.springframework.org/schema/context/spring-context-3.0.xsd
http:
//www.springframework.org/schema/mvc
http:
//www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http:
//www.springframework.org/schema/tx
http:
//www.springframework.org/schema/tx/spring-tx-3.0.xsd
http:
//www.springframework.org/schema/cache
http:
//www.springframework.org/schema/cache/spring-cache-3.2.xsd">
<!--注解 处理器 映射器 -->
<!-- 映射器 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping springmvc3.
1
以前-->
<!-- 映射器 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping springmvc3.
1
以后 -->
<!-- 适配器 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter springmvc3.
1
以前-->
<!-- 适配器 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter springmvc3.
1
以后 -->
<!--配置映射器和 适配器
<bean
class
=
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"
/>
<bean
class
=
"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
/> -->
<!-- 开启注解 映射器和 适配器 这种方式默认加载了很多参数绑定的方法 例如 json转换解析器-->
<mvc:annotation-driven/>
<!-- 配置 Handler
<bean
class
=
"com.jalja.springmvc_mybatis.controller.UserController"
/>-->
<!-- 注解 配置 基于组建扫描的方式 -->
<context:component-scan base-
package
=
"com.jalja.springmvc_mybatis.controller"
/>
<!-- 配置自定义参数解析器 -->
<mvc:annotation-driven conversion-service=
"conversionService"
/>
<bean id=
"conversionService"
class
=
"org.springframework.format.support.FormattingConversionServiceFactoryBean"
>
<property name=
"converters"
>
<list>
<!-- 日期类型转换 -->
<bean
class
=
"com.jalja.springmvc_mybatis.converter.CustomDateConverter"
></bean>
</list>
</property>
</bean>
<!-- 全局异常处理器 -->
<bean
class
=
"com.jalja.springmvc_mybatis.exception.CustomExceptionResolver"
/>
<!-- 文件上传 -->
<!-- 支持上传文件 -->
<bean id=
"multipartResolver"
class
=
"org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
<!-- 文件大小 5M -->
<property name=
"maxUploadSize"
value=
"5242880"
/>
</bean>
<!-- 使用 restFul 风格 编程 照成 的 静态资源 访问 问题 -->
<!-- <mvc:resources mapping=
"/js/**"
location=
"/resources/js/"
/> -->
<!-- springMVC拦截器的配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path=
"/**"
/>
<bean
class
=
"com.jalja.springmvc_mybatis.interceptor.LoginInterceptor"
/>
</mvc:interceptor>
</mvc:interceptors>
<!-- 视图映射 jsp解析 默认使用jstl-->
<bean
class
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<!-- 默认使用 -->
<property name=
"viewClass"
value=
"org.springframework.web.servlet.view.JstlView"
/>
<property name=
"prefix"
value=
"/WEB-INF/jsp/"
/>
<property name=
"suffix"
value=
".jsp"
/>
</bean>
</beans>
|
f、config/jdbc.properties 。
1
2
3
4
|
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql:
//localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
jdbc_username=root
jdbc_password=
111111
|
g、config/log4j.properties 。
1
2
3
4
5
6
|
#在开发环境下的日志级别 要设置成debug,生成环境设置成info 或error
log4j.rootLogger=debug, stdout
log4j.logger.org.apache.ibatis=debug
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
|
h、com/jalja/springmvc_mybatis/controller/ItemsController.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package
com.jalja.springmvc_mybatis.controller;
import
java.io.File;
import
java.util.List;
import
java.util.UUID;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.PathVariable;
import
org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.ResponseBody;
import
org.springframework.web.multipart.MultipartFile;
import
com.jalja.springmvc_mybatis.exception.CustomException;
import
com.jalja.springmvc_mybatis.model.custom.ItemsCustom;
import
com.jalja.springmvc_mybatis.service.ItemsService;
/**
* 商品
* @author PC003
*conterver参数转换器 springMvc提供了很多参数转换器
*/
@Controller
@RequestMapping
(
"/items"
)
//窄化请求映射
public
class
ItemsController {
@Autowired
ItemsService itemsService;
@RequestMapping
(value=
"/findItemsList"
)
public
String findItemsList(Model model)
throws
Exception{
List<ItemsCustom> itemsList=itemsService.findItemsList(
null
);
System.out.println(itemsList);
model.addAttribute(
"itemsList"
, itemsList);
return
"itemsList"
;
}
@RequestMapping
(value=
"/editItems"
, method={RequestMethod.POST,RequestMethod.GET})
//限制Http请求方式
//@RequestParam 将请求参数 与 形式参数进行绑定 required:指定属性必须传入值 defaultValue:设置默认值
public
String editItems(Model model,
@RequestParam
(value=
"id"
,required=
true
,defaultValue=
"0"
) Integer itemsId)
throws
Exception{
ItemsCustom itemsCustom=itemsService.findItemsById(itemsId);
if
(itemsCustom==
null
){
throw
new
CustomException(
"商品不存在"
);
}
model.addAttribute(
"itemsCustom"
, itemsCustom);
return
"editItems"
;
}
@RequestMapping
(value=
"/updateItems"
)
public
String editItemsSubmit(Integer id,ItemsCustom itemsCustom,MultipartFile itemsPic)
throws
Exception{
String uploadFileName=itemsPic.getOriginalFilename();
//获取上传的文件名
if
(itemsPic!=
null
&& uploadFileName!=
null
&& !uploadFileName.equals(
""
)){
String imagesPath=
"E:\\develop\\upload\\images\\"
;
String newFileName=UUID.randomUUID()+uploadFileName.substring(uploadFileName.lastIndexOf(
"."
),uploadFileName.length());
File newFile=
new
File(imagesPath+newFileName);
itemsPic.transferTo(newFile);
//将内存中的数据写入磁盘
itemsCustom.setPic(newFileName);
}
itemsService.updateItemsById(id, itemsCustom);
return
"redirect:findItemsList.do"
;
//重定向
}
//JSON的使用 @ResponseBody:将对像转json输出 @RequestBody:将请求参数转 java对象
@RequestMapping
(value=
"/jsonRequest"
)
public
@ResponseBody
ItemsCustom jsonRequest(
@RequestBody
ItemsCustom itemsCustom)
throws
Exception{
return
itemsCustom;
}
//RestFul 风格 编程 /restFulRequest/{id}:表示将这个位置的参数传到 @PathVariable 指定的名称中
@RequestMapping
(value=
"/restFulRequest/{id}"
)
public
@ResponseBody
ItemsCustom restFulRequest(
@PathVariable
(
"id"
) Integer id)
throws
Exception{
ItemsCustom itemsCustom=itemsService.findItemsById(id);
return
itemsCustom;
}
}
|
希望本篇实例对您有所帮助 。
原文链接:http://www.2cto.com/kf/201605/511069.html 。
最后此篇关于SpringMVC mybatis整合实例代码详解的文章就讲到这里了,如果你想了解更多关于SpringMVC mybatis整合实例代码详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有没有一种方法可以使用标准类型构造函数(例如 int、set、dict、list、tuple 等)以用户定义的方式将用户定义类的实例强制转换为其中一种类型?例如 class Example:
我知道这个问题在Stackoverflow中有很多问题,但是即使有很多答案,这些答案也帮不了我什么,也没有找到答案。 在我的WebAPP中,它可以正常工作,但是当我将其转换为API时,它失败了(主题标
这个问题已经有答案了: Why does the ternary operator unexpectedly cast integers? (3 个回答) 已关闭 9 年前。 最近遇到一个Java的陷
我尝试使用 FirebaseApp.configure() 配置 Firebase,但遇到以下崩溃: *** Terminating app due to uncaught exception 'c
我有一个自连接员工实体类,其中包含与其自身相关的 id、name 和 ref 列。我想创建它的新实例并将其保存到数据库。 首先我创建了一个 Employee 类的实例并将其命名为 manager。然后
我有一个用于添加新公寓的表单,在该表单中我有一个下拉列表,用户可以在其中选择负责的人员。 显然,当您从下拉列表中选择并尝试保存公寓时,我的应用程序认为该人已被修改。它给了我下面的错误,指示我应该首先保
从 Visualforce 页面,我需要检索我们组织的 salesforce 实例的 URL,而不是 Visual Force URL。 例如我需要https://cs1.salesforce.com
我遇到了一些可能的问题答案,但这是关于从 Hibernate 3.4.0GA 升级到 Hibernate 4.1.8 的问题。所以这曾经在以前的版本下工作,我已经四处搜索了为什么它在这个新版本中出现了
似乎一遍又一遍地问这个问题,我仍然找不到解决我问题的答案。我在下面有一个域模型。每个新创建或更新的“安全用户”都需要我确保其具有配置文件,如果没有,则创建一个新的配置文件并分配给它。 配置文件的要求相
我很难调试为什么 JPA 不级联我的 @ManyToMany 关系。我发现的所有答案都与缺少级联语句有关。但我确实拥有它们并且仍然得到: Caused by: org.hibernate.Transi
Play 服务 API 表明有一个叫做 Instance ID 的东西 但是,在 Android Studio 中包含以下内容后,我无法导入 InstanceID 类 compile "com.goo
我正在使用 Seam 框架。我有 2 个实体: 请求.java @Entity @Table(name = "SRV_REQUEST") public class Request { private
This question处理构建一个适当的Monad来自单子(monad)的实例,但仅在某些约束下 - 例如Set .诀窍是将其包装成 ContT ,它将约束推迟到包装/展开其值。 现在我想对 Ap
我正在尝试执行此查询: StringBuffer sb = new StringBuffer(); sb.append("select p from PointsEntity p " + "where
我试图了解是否可以更改我的 hibernate 配置并使用单个 MySQL 实例(而不是我当前拥有的多个 MySQL 实例): 我有一个使用 hibernate 的 Java 应用程序,与 2 个模式
我有一个选项卡滑动布局,其中包括四个选项卡,每个选项卡都有自己的布局和 fragment ,在我的主要 Activity 布局中,viewpager 参与更改选项卡。特定 View (选项卡)在应用程
我看到很多帖子声称他们正在运行 MySql 的 RDS 实例,但无法连接到该实例,但我没有运行 RDS。 我使用 EC2 实例来托管我的 WordPress 博客,该博客是使用 Web 平台安装程序安
因为我在我的 ec-2 实例上的 python 虚拟环境中运行应用程序( Airflow ),并且我想在同一个 ec2 实例上的默认 python 环境中运行命令,所以我认为 ssh 到我自己的实例更
这个问题已经有答案了: How to fix the Hibernate "object references an unsaved transient instance - save the tra
例子: run APP1 .. ... run APP1 ... run APP2 如何在 APP2 中对 Vue 说我需要调用 APP1?
我是一名优秀的程序员,十分优秀!