这些天一直在整ssm(springmvc,spring,mybatis),现在就用笔记记下来。
-
搭建maven工程,项目结构如下
-
编写pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.wq.ssm</groupId>
<artifactId>single_module_ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!-- 集中定义公用的依赖版本号 -->
<!--版本变量设置 start-->
<properties>
<spring.version>4.3.2.RELEASE</spring.version>
<mybatis.version>3.4.1</mybatis.version>
<mybatis-spring.version>1.3.0</mybatis-spring.version>
<!--下面这两个是springAOP需要用到-->
<aspectjweaver.version>1.7.2</aspectjweaver.version>
<persistence-api.version>1.0.2</persistence-api.version>
<junit.version>4.11</junit.version>
<mysql-connector.version>5.1.21</mysql-connector.version>
<druid.version>1.0.4</druid.version>
<!--<slf4j.version>1.7.7</slf4j.version>-->
<log4j.version>1.2.17</log4j.version>
<javaee-api.version>7.0</javaee-api.version>
<jstl.version>1.2</jstl.version>
<jsp-api.version>2.0</jsp-api.version>
<servlet-api.version>2.5</servlet-api.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-io.version>2.4</commons-io.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-email.version>1.3.2</commons-email.version>
<commons-beanutils.version>1.9.2</commons-beanutils.version>
<httpclient.version>4.3.3</httpclient.version>
<jackson-databind.version>2.4.2</jackson-databind.version>
<fastjson.version>1.1.43</fastjson.version>
<!--架包版本变量 end-->
<!--插件版本变量 start-->
<tomcat6-maven-plugin.version>2.1</tomcat6-maven-plugin.version>
<tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
<jetty-plugin.version>8.1.16.v20140903</jetty-plugin.version>
<maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
<maven-war-plugin.version>2.3</maven-war-plugin.version>
<maven-resources-plugin.version>2.6</maven-resources-plugin.version>
<maven-install-plugin.version>2.4</maven-install-plugin.version>
<maven-clean-plugin.version>2.5</maven-clean-plugin.version>
<maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
<maven-dependency-plugin.version>2.5.1</maven-dependency-plugin.version>
<maven-source-plugin.version>2.2.1</maven-source-plugin.version>
<!--插件版本变量 end-->
<!--其他变量 start-->
<war-name.version>ssm</war-name.version>
<jdk.version>1.8</jdk.version>
<tomcat-port.version>8080</tomcat-port.version>
<tomcat-uri-encoding.version>UTF-8</tomcat-uri-encoding.version>
<tomcat-path.version>/</tomcat-path.version>
<jetty-port.version>8080</jetty-port.version>
<jetty-path.version>/</jetty-path.version>
<!--其他变量 end-->
<!--这个配置是为了解决下面两个警告-->
<!--Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!-->
<!--File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!-->
<!--指定Maven用什么编码来读取源码及文档-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--指定Maven用什么编码来呈现站点的HTML文件-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</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-webmvc</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-orm</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-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--这个jar 文件包含支持UI模版(Velocity,FreeMarker,JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类。 外部依赖spring-context-->
<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>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>${persistence-api.version}</version>
</dependency>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<!--这个组件具体可以看这里介绍:http://www.oschina.net/p/druid-->
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
<!-- java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${javaee-api.version}</version>
<scope>provided</scope>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!--使用logback start-->
<!--导入这个的时候会自动导入:slf4j-api、logback-core,所以我们还需要导入:log4j和logback-ext-spring-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.4</version>
</dependency>
<!--JSON处理-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
<!-- 上传组件包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<!--apache工具包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
</dependencies>
<!--设置项目编译级别等设置 start-->
<build>
<resources>
<!--表示把java目录下的有关xml文件,properties文件编译/打包的时候放在resource目录下-->
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
<plugins>
<!-- Compiler 插件, 设定JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<!-- war 打包插件, 设定war包名称不带版本号 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<warName>${war-name.version}</warName>
</configuration>
</plugin>
<!--tomcat7插件-->
<!--https://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/run-mojo.html-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tomcat7-maven-plugin.version}</version>
<configuration>
<path>${tomcat-path.version}</path>
<port>${tomcat-port.version}</port>
<uriEncoding>${tomcat-uri-encoding.version}</uriEncoding>
<url>http://localhost:8080/manager/text</url>
<server>tomcat7</server>
<username>admin</username>
<password>admin</password>
</configuration>
</plugin>
<!--jetty插件-->
<!--http://www.eclipse.org/jetty/documentation/9.0.0.M3/jetty-maven-plugin.html-->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-plugin.version}</version>
<configuration>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>${jetty-port.version}</port>
</connector>
</connectors>
<webApp>
<!--访问地址:http://localhost:8080/index.jsp-->
<!--如果不带index.jsp会直接报404,这个一直没找到原因-->
<contextPath>${jetty-path.version}</contextPath>
</webApp>
<!--scanIntervalSeconds 可选[秒]。在很短的时间间隔内在扫描web应用检查是否有改变,如果发觉有任何改变则自动热部署。默认为0,表示禁用热部署检查。任何一个大于0的数字都将表示启用。-->
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
</plugin>
<!-- resource插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
</plugin>
<!-- source插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
</plugin>
<!-- install插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<!-- clean插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
</plugin>
<!-- dependency插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
</plugin>
</plugins>
</build>
</project>
-
编写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">
<display-name>SSM Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Spring和mybatis的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext*.xml</param-value>
</context-param>
<!-- Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止Spring内存溢出监听器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- 配置SESSION超时,单位是分钟 -->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
<!-- ############################################ filter start ############################################ -->
<!-- 编码过滤器 -->
<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>/*</url-pattern>
</filter-mapping>
<!-- druid 数据源,用于采集 web-jdbc 关联监控的数据 -->
<!-- 具体参考官网:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter-->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
<init-param>
<param-name>profileEnable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ############################################ filter end ############################################ -->
<!-- ############################################ servlet start ############################################ -->
<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 此处可以可以配置成 *.do ,对应struts的后缀习惯 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!--展示Druid的统计信息-->
<!--具体可以看官网信息:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE-->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<!--访问路径eg:http://localhost:8080/druid/index.html -->
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!-- ############################################ servlet end ############################################ -->
</web-app>
-
编写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"
xsi:schemaLocation="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">
<!--上面的xsd最好和当前使用的Spring版本号一致,如果换了Spring版本,这个最好也跟着改-->
<!-- 引入属性文件 放在最开头,在使用spring之前就引入,里面的变量才能被引用-->
<context:property-placeholder location="classpath*:properties/*.properties"/>
<!--
引入属性文件也可以用这种写法
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:config.properties" />
</bean>
-->
<!-- 自动扫描(需要自动注入的类,对于那些类上有注解:@Repository、@Service、@Controller、@Component都进行注入) -->
<!--因为 Spring MVC 是 Spring 的子容器,所以我们在 Spring MVC 的配置中再指定扫描 Controller 的注解,这里是父容器的配置地方-->
<!--注解注入的相关材料可以看:-->
<!--http://blog.csdn.net/u012763117/article/details/17253849-->
<!--http://casheen.iteye.com/blog/295348-->
<!--http://blog.csdn.net/zhang854429783/article/details/6785574-->
<context:component-scan base-package="org.wq.ssm.**.service,org.wq.ssm.**.mapper"/>
</beans>
-
applicationContext-dataSource.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!--上面的xsd最好和当前使用的Spring版本号一致,如果换了Spring版本,这个最好也跟着改-->
<!--
使用dbcp连接方式,需要导入commons-dbcp的架包(版本:1.2.2)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${data_source_url}" />
<property name="username" value="${data_source_username}" />
<property name="password" value="${data_source_passworddata_source_password}" />
<!– 初始化连接大小 –>
<property name="initialSize" value="0"></property>
<!– 连接池最大数量 –>
<property name="maxActive" value="20"></property>
<!– 连接池最大空闲 –>
<property name="maxIdle" value="20"></property>
<!– 连接池最小空闲 –>
<property name="minIdle" value="1"></property>
<!– 获取连接最大等待时间 –>
<property name="maxWait" value="60000"></property>
</bean>
-->
<!-- 使用阿里的druid配置数据源 start-->
<!--具体查看官网信息:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_DruidDataSource%E5%8F%82%E8%80%83%E9%85%8D%E7%BD%AE-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!--这三个变量读取config.properties的-->
<property name="url" value="${data_source_url}"/>
<property name="username" value="${data_source_username}"/>
<property name="password" value="${data_source_password}"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="1"/>
<!-- 初始化连接池最大使用连接数量 -->
<property name="maxActive" value="20"/>
<!-- 初始化连接池最小空闲 -->
<property name="minIdle" value="1"/>
<!-- 获取连接最大等待时间,单位毫秒-->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000"/>
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<!--如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。-->
<property name="poolPreparedStatements" value="false" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
<property name="validationQuery" value="${validation_query}"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!--当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接-->
<!--配置removeAbandoned对性能会有一些影响,建议怀疑存在泄漏之后再打开。在上面的配置中,如果连接超过30分钟未关闭,就会被强行回收,并且日志记录连接申请时的调用堆栈。-->
<!--具体查看官网信息:https://github.com/alibaba/druid/wiki/%E8%BF%9E%E6%8E%A5%E6%B3%84%E6%BC%8F%E7%9B%91%E6%B5%8B-->
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true"/>
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true"/>
<!-- 配置监控统计拦截的filters-->
<!--官网信息:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter-->
<!--mergeSql可以合并输出的sql,方便查看,但是在mybatis框架中使用这个则无法监控sql,需要用stat-->
<!--<property name="filters" value="mergeSql,log4j"/>-->
<!--<property name="filters" value="mergeSql,wall"/>-->
<!--<property name="filters" value="stat"/>-->
<!--<property name="filters" value="mergeSql"/>-->
<property name="filters" value="stat,log4j"/>
</bean>
<!-- 使用阿里的druid配置数据源 end-->
</beans>
-
applicationContext-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!--上面的xsd最好和当前使用的Spring版本号一致,如果换了Spring版本,这个最好也跟着改-->
<!-- spring和MyBatis整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 自动扫描 mapper.xml文件(读取的是编译出来的classes目录下的module目录下的具体模块的mapping目录下的任意xml文件) -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<!--最新mybatis的配置文件位置-->
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
</bean>
<!-- mapper 接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.wq.ssm.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
</beans>
-
applicationContext-transaction.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: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-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/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor" />
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
<property name="patterns">
<list>
<value>org.wq.ssm.*.service.*</value>
</list>
</property>
</bean>
<aop:config proxy-target-class="true">
<!-- pointcut-ref="druid-stat-pointcut" 这个报红没事-->
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="register*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="edit*" propagation="REQUIRED"/>
<tx:method name="batch*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="remove*" propagation="REQUIRED"/>
<tx:method name="time*" propagation="REQUIRED"/><!--定时器方法-->
<tx:method name="repair" propagation="REQUIRED"/>
<tx:method name="deleteAndRepair" propagation="REQUIRED"/>
<!--以这些单词开头的方法不加入事务-->
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="load*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="search*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="datagrid*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* org.wq.ssm.*.service.impl.*.*(..) )"/>
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice"/>
</aop:config>
</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: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.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.xsd">
<context:component-scan base-package="org.wq.ssm.**.controller"/>
<!-- 配置注解驱动 -->
<mvc:annotation-driven/>
<mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/>
<mvc:resources mapping="/images/**" location="/WEB-INF/statics/images/"/>
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/view/"/><!--设置JSP文件的目录位置-->
<property name="suffix" value=".jsp"/>
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 文件大小最大值 上传文件大小限制为10M,10*1024*1024 -->
<property name="maxUploadSize" value="10485760"/>
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="4096"/>
</bean>
</beans>
-
mybatis配置文件
-
mybatis-config.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>
<settings>
<!-- 开启mybatis缓存设置,一般都是true -->
<setting name="cacheEnabled" value="true"/>
<!--延迟加载的全局开关-->
<setting name="lazyLoadingEnabled" value="false"/>
<!--设置超时时间-->
<setting name="defaultStatementTimeout" value="3000"/>
<!--本地缓存机制-->
<setting name="localCacheScope" value="STATEMENT"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--允许JDBC支持自动生成主键,需要驱动的兼容-->
<setting name="useGeneratedKeys" value="true"/>
</settings>
</configuration>
-
属性配置文件
-
config.properties
validation_query=SELECT 1
data_source_url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true
data_source_username=root
data_source_password=root
-
编写java代码
-
po
package org.wq.ssm.po;
import java.util.Date;
public class SysUser {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_id
*
* @mbggenerated
*/
private Long sysUserId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_login_name
*
* @mbggenerated
*/
private String sysUserLoginName;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_login_password
*
* @mbggenerated
*/
private String sysUserLoginPassword;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_status
*
* @mbggenerated
*/
private String sysUserStatus;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_is_delete
*
* @mbggenerated
*/
private String sysUserIsDelete;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_register_datetime
*
* @mbggenerated
*/
private Date sysUserRegisterDatetime;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_register_source
*
* @mbggenerated
*/
private String sysUserRegisterSource;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_type
*
* @mbggenerated
*/
private String sysUserType;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_sex
*
* @mbggenerated
*/
private String sysUserSex;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_is_email_active
*
* @mbggenerated
*/
private String sysUserIsEmailActive;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_is_mobile_active
*
* @mbggenerated
*/
private String sysUserIsMobileActive;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_register_type
*
* @mbggenerated
*/
private String sysUserRegisterType;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_pay_passwrod
*
* @mbggenerated
*/
private String sysUserPayPasswrod;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_icon
*
* @mbggenerated
*/
private String sysUserIcon;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_real_name
*
* @mbggenerated
*/
private String sysUserRealName;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_email
*
* @mbggenerated
*/
private String sysUserEmail;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_mobile
*
* @mbggenerated
*/
private String sysUserMobile;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_weibo_id
*
* @mbggenerated
*/
private String sysUserWeiboId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column sys_user.sys_user_qq_id
*
* @mbggenerated
*/
private String sysUserQqId;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_id
*
* @return the value of sys_user.sys_user_id
*
* @mbggenerated
*/
public Long getSysUserId() {
return sysUserId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_id
*
* @param sysUserId the value for sys_user.sys_user_id
*
* @mbggenerated
*/
public void setSysUserId(Long sysUserId) {
this.sysUserId = sysUserId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_login_name
*
* @return the value of sys_user.sys_user_login_name
*
* @mbggenerated
*/
public String getSysUserLoginName() {
return sysUserLoginName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_login_name
*
* @param sysUserLoginName the value for sys_user.sys_user_login_name
*
* @mbggenerated
*/
public void setSysUserLoginName(String sysUserLoginName) {
this.sysUserLoginName = sysUserLoginName == null ? null : sysUserLoginName.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_login_password
*
* @return the value of sys_user.sys_user_login_password
*
* @mbggenerated
*/
public String getSysUserLoginPassword() {
return sysUserLoginPassword;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_login_password
*
* @param sysUserLoginPassword the value for sys_user.sys_user_login_password
*
* @mbggenerated
*/
public void setSysUserLoginPassword(String sysUserLoginPassword) {
this.sysUserLoginPassword = sysUserLoginPassword == null ? null : sysUserLoginPassword.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_status
*
* @return the value of sys_user.sys_user_status
*
* @mbggenerated
*/
public String getSysUserStatus() {
return sysUserStatus;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_status
*
* @param sysUserStatus the value for sys_user.sys_user_status
*
* @mbggenerated
*/
public void setSysUserStatus(String sysUserStatus) {
this.sysUserStatus = sysUserStatus == null ? null : sysUserStatus.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_is_delete
*
* @return the value of sys_user.sys_user_is_delete
*
* @mbggenerated
*/
public String getSysUserIsDelete() {
return sysUserIsDelete;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_is_delete
*
* @param sysUserIsDelete the value for sys_user.sys_user_is_delete
*
* @mbggenerated
*/
public void setSysUserIsDelete(String sysUserIsDelete) {
this.sysUserIsDelete = sysUserIsDelete == null ? null : sysUserIsDelete.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_register_datetime
*
* @return the value of sys_user.sys_user_register_datetime
*
* @mbggenerated
*/
public Date getSysUserRegisterDatetime() {
return sysUserRegisterDatetime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_register_datetime
*
* @param sysUserRegisterDatetime the value for sys_user.sys_user_register_datetime
*
* @mbggenerated
*/
public void setSysUserRegisterDatetime(Date sysUserRegisterDatetime) {
this.sysUserRegisterDatetime = sysUserRegisterDatetime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_register_source
*
* @return the value of sys_user.sys_user_register_source
*
* @mbggenerated
*/
public String getSysUserRegisterSource() {
return sysUserRegisterSource;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_register_source
*
* @param sysUserRegisterSource the value for sys_user.sys_user_register_source
*
* @mbggenerated
*/
public void setSysUserRegisterSource(String sysUserRegisterSource) {
this.sysUserRegisterSource = sysUserRegisterSource == null ? null : sysUserRegisterSource.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_type
*
* @return the value of sys_user.sys_user_type
*
* @mbggenerated
*/
public String getSysUserType() {
return sysUserType;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_type
*
* @param sysUserType the value for sys_user.sys_user_type
*
* @mbggenerated
*/
public void setSysUserType(String sysUserType) {
this.sysUserType = sysUserType == null ? null : sysUserType.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_sex
*
* @return the value of sys_user.sys_user_sex
*
* @mbggenerated
*/
public String getSysUserSex() {
return sysUserSex;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_sex
*
* @param sysUserSex the value for sys_user.sys_user_sex
*
* @mbggenerated
*/
public void setSysUserSex(String sysUserSex) {
this.sysUserSex = sysUserSex == null ? null : sysUserSex.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_is_email_active
*
* @return the value of sys_user.sys_user_is_email_active
*
* @mbggenerated
*/
public String getSysUserIsEmailActive() {
return sysUserIsEmailActive;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_is_email_active
*
* @param sysUserIsEmailActive the value for sys_user.sys_user_is_email_active
*
* @mbggenerated
*/
public void setSysUserIsEmailActive(String sysUserIsEmailActive) {
this.sysUserIsEmailActive = sysUserIsEmailActive == null ? null : sysUserIsEmailActive.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_is_mobile_active
*
* @return the value of sys_user.sys_user_is_mobile_active
*
* @mbggenerated
*/
public String getSysUserIsMobileActive() {
return sysUserIsMobileActive;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_is_mobile_active
*
* @param sysUserIsMobileActive the value for sys_user.sys_user_is_mobile_active
*
* @mbggenerated
*/
public void setSysUserIsMobileActive(String sysUserIsMobileActive) {
this.sysUserIsMobileActive = sysUserIsMobileActive == null ? null : sysUserIsMobileActive.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_register_type
*
* @return the value of sys_user.sys_user_register_type
*
* @mbggenerated
*/
public String getSysUserRegisterType() {
return sysUserRegisterType;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_register_type
*
* @param sysUserRegisterType the value for sys_user.sys_user_register_type
*
* @mbggenerated
*/
public void setSysUserRegisterType(String sysUserRegisterType) {
this.sysUserRegisterType = sysUserRegisterType == null ? null : sysUserRegisterType.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_pay_passwrod
*
* @return the value of sys_user.sys_user_pay_passwrod
*
* @mbggenerated
*/
public String getSysUserPayPasswrod() {
return sysUserPayPasswrod;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_pay_passwrod
*
* @param sysUserPayPasswrod the value for sys_user.sys_user_pay_passwrod
*
* @mbggenerated
*/
public void setSysUserPayPasswrod(String sysUserPayPasswrod) {
this.sysUserPayPasswrod = sysUserPayPasswrod == null ? null : sysUserPayPasswrod.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_icon
*
* @return the value of sys_user.sys_user_icon
*
* @mbggenerated
*/
public String getSysUserIcon() {
return sysUserIcon;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_icon
*
* @param sysUserIcon the value for sys_user.sys_user_icon
*
* @mbggenerated
*/
public void setSysUserIcon(String sysUserIcon) {
this.sysUserIcon = sysUserIcon == null ? null : sysUserIcon.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_real_name
*
* @return the value of sys_user.sys_user_real_name
*
* @mbggenerated
*/
public String getSysUserRealName() {
return sysUserRealName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_real_name
*
* @param sysUserRealName the value for sys_user.sys_user_real_name
*
* @mbggenerated
*/
public void setSysUserRealName(String sysUserRealName) {
this.sysUserRealName = sysUserRealName == null ? null : sysUserRealName.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_email
*
* @return the value of sys_user.sys_user_email
*
* @mbggenerated
*/
public String getSysUserEmail() {
return sysUserEmail;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_email
*
* @param sysUserEmail the value for sys_user.sys_user_email
*
* @mbggenerated
*/
public void setSysUserEmail(String sysUserEmail) {
this.sysUserEmail = sysUserEmail == null ? null : sysUserEmail.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_mobile
*
* @return the value of sys_user.sys_user_mobile
*
* @mbggenerated
*/
public String getSysUserMobile() {
return sysUserMobile;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_mobile
*
* @param sysUserMobile the value for sys_user.sys_user_mobile
*
* @mbggenerated
*/
public void setSysUserMobile(String sysUserMobile) {
this.sysUserMobile = sysUserMobile == null ? null : sysUserMobile.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_weibo_id
*
* @return the value of sys_user.sys_user_weibo_id
*
* @mbggenerated
*/
public String getSysUserWeiboId() {
return sysUserWeiboId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_weibo_id
*
* @param sysUserWeiboId the value for sys_user.sys_user_weibo_id
*
* @mbggenerated
*/
public void setSysUserWeiboId(String sysUserWeiboId) {
this.sysUserWeiboId = sysUserWeiboId == null ? null : sysUserWeiboId.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column sys_user.sys_user_qq_id
*
* @return the value of sys_user.sys_user_qq_id
*
* @mbggenerated
*/
public String getSysUserQqId() {
return sysUserQqId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column sys_user.sys_user_qq_id
*
* @param sysUserQqId the value for sys_user.sys_user_qq_id
*
* @mbggenerated
*/
public void setSysUserQqId(String sysUserQqId) {
this.sysUserQqId = sysUserQqId == null ? null : sysUserQqId.trim();
}
@Override
public String toString() {
return "SysUser{" +
"sysUserId=" + sysUserId +
", sysUserLoginName='" + sysUserLoginName + '\'' +
", sysUserLoginPassword='" + sysUserLoginPassword + '\'' +
", sysUserStatus='" + sysUserStatus + '\'' +
", sysUserIsDelete='" + sysUserIsDelete + '\'' +
", sysUserRegisterDatetime=" + sysUserRegisterDatetime +
", sysUserRegisterSource='" + sysUserRegisterSource + '\'' +
", sysUserType='" + sysUserType + '\'' +
", sysUserSex='" + sysUserSex + '\'' +
", sysUserIsEmailActive='" + sysUserIsEmailActive + '\'' +
", sysUserIsMobileActive='" + sysUserIsMobileActive + '\'' +
", sysUserRegisterType='" + sysUserRegisterType + '\'' +
", sysUserPayPasswrod='" + sysUserPayPasswrod + '\'' +
", sysUserIcon='" + sysUserIcon + '\'' +
", sysUserRealName='" + sysUserRealName + '\'' +
", sysUserEmail='" + sysUserEmail + '\'' +
", sysUserMobile='" + sysUserMobile + '\'' +
", sysUserWeiboId='" + sysUserWeiboId + '\'' +
", sysUserQqId='" + sysUserQqId + '\'' +
'}';
}
}
-
mapper
package org.wq.ssm.mapper;
import org.wq.ssm.po.SysUser;
public interface SysUserMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
int deleteByPrimaryKey(Long sysUserId);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
int insert(SysUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
int insertSelective(SysUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
SysUser selectByPrimaryKey(Long sysUserId);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
int updateByPrimaryKeySelective(SysUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table sys_user
*
* @mbggenerated
*/
int updateByPrimaryKey(SysUser record);
}
-
service
package org.wq.ssm.service;
import org.wq.ssm.po.SysUser;
public interface SysUserService {
SysUser getById(Long id);
}
package org.wq.ssm.service.impl;
import org.springframework.stereotype.Service;
import org.wq.ssm.mapper.SysUserMapper;
import org.wq.ssm.po.SysUser;
import org.wq.ssm.service.SysUserService;
import javax.annotation.Resource;
@Service
public class SysUserServiceImpl implements SysUserService {
@Resource
private SysUserMapper sysUserMapper;
@Override
public SysUser getById(Long id) {
return sysUserMapper.selectByPrimaryKey(id);
}
}
-
controller
package org.wq.ssm.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.wq.ssm.po.SysUser;
import org.wq.ssm.service.SysUserService;
import javax.annotation.Resource;
import java.util.Date;
@Controller
@RequestMapping("/sysUserController")
public class SysUserController {
private static final Logger LOG = LoggerFactory.getLogger(SysUserController.class);
@Resource
private SysUserService sysUserService;
@RequestMapping("/showUserToJspById/{userId}")
public String showUser(Model model,@PathVariable("userId") Long userId){
SysUser user = this.sysUserService.getById(userId);
model.addAttribute("user", user);
return "showUser";
}
@RequestMapping("/showUserToJSONById/{userId}")
@ResponseBody
public SysUser showUser(@PathVariable("userId") Long userId){
SysUser user = sysUserService.getById(userId);
return user;
}
@RequestMapping("/test-logback")
@ResponseBody
public Date testLogback(){
LOG.trace("-----------------------------------trace");
LOG.debug("-----------------------------------debug");
LOG.info("-----------------------------------info");
LOG.warn("-----------------------------------warn");
LOG.error("-----------------------------------error");
return new Date();
}
}
启动
访问:localhost:8080/sysUserController/showUserToJspById/1
项目地址:https://git.oschina.net/excpetion/ssm