Spring+Springmvc+mybatis

来源:互联网 发布:数据采集器的工作原理 编辑:程序博客网 时间:2024/06/06 19:06

目录结构
这里写图片描述

UserController

package cn.com.tiza.web.controller;import cn.com.tiza.web.service.UserService;import cn.com.tiza.web.vo.User;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;/** * Created by AA on 2017/7/7. */@Controller@RequestMapping("/user")public class UserController {    @Autowired    private UserService userService;    private static final Logger LOG = LoggerFactory.getLogger(UserController.class);    @RequestMapping(value = "/showUser/{id}", method = RequestMethod.GET)    @ResponseBody    public User toIndex(@PathVariable("id") String id) {        LOG.debug("id is {}",id);        User user = this.userService.getUserById(id);        return user;    }}

UserService

package cn.com.tiza.web.service;import cn.com.tiza.web.mapper.UserMapper;import cn.com.tiza.web.vo.User;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/** * Created by AA on 2017/7/7. */@Servicepublic class UserService {    @Autowired    private SqlSessionTemplate sqlSession;    public User getUserById(String id){        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        User user = userMapper.getUserById(id);        return user;    }}

pom.xml

<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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.com.tiza</groupId>  <artifactId>web</artifactId>  <packaging>war</packaging>  <version>1.0-SNAPSHOT</version>  <name>web Maven Webapp</name>  <url>http://maven.apache.org</url>  <properties>    <org.springframework-version>4.3.2.RELEASE</org.springframework-version>    <org.mybatis-version>3.2.8</org.mybatis-version>    <mysql-version>5.1.25</mysql-version>    <c3p0.version>0.9.5</c3p0.version>    <fastjson-version>1.2.8</fastjson-version>    <commons-lang3.version>3.4</commons-lang3.version>    <dom4j.version>1.6.1</dom4j.version>    <fastjson.version>1.2.11</fastjson.version>    <maven.war.plugin.version>2.6</maven.war.plugin.version>    <jcl.slf4j.version>1.7.12</jcl.slf4j.version>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>    <dependency>      <groupId>org.apache.commons</groupId>      <artifactId>commons-lang3</artifactId>      <version>${commons-lang3.version}</version>    </dependency>    <dependency>      <groupId>com.alibaba</groupId>      <artifactId>fastjson</artifactId>      <version>${fastjson.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>${org.springframework-version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-core</artifactId>      <version>${org.springframework-version}</version>      <exclusions>        <exclusion>          <groupId>commons-logging</groupId>          <artifactId>commons-logging</artifactId>        </exclusion>      </exclusions>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>      <version>${org.springframework-version}</version>      <exclusions>        <exclusion>          <artifactId>spring-context</artifactId>          <groupId>org.springframework</groupId>        </exclusion>      </exclusions>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jdbc</artifactId>      <version>${org.springframework-version}</version>    </dependency>    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>javax.servlet-api</artifactId>      <version>3.1.0</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-api</artifactId>      <version>1.7.12</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>log4j-over-slf4j</artifactId>      <version>1.7.7</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>jcl-over-slf4j</artifactId>      <version>${jcl.slf4j.version}</version>    </dependency>    <dependency>      <groupId>ch.qos.logback</groupId>      <artifactId>logback-classic</artifactId>      <version>1.1.3</version>    </dependency>    <dependency>      <groupId>ch.qos.logback</groupId>      <artifactId>logback-core</artifactId>      <version>1.1.3</version>    </dependency>    <dependency>      <groupId>ch.qos.logback</groupId>      <artifactId>logback-access</artifactId>      <version>1.1.3</version>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>      <version>${org.mybatis-version}</version>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis-spring</artifactId>      <version>1.2.4</version>    </dependency>    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>      <version>${mysql-version}</version>    </dependency>    <!-- jackson -->    <dependency>      <groupId>com.fasterxml.jackson.core</groupId>      <artifactId>jackson-databind</artifactId>      <version>2.6.3</version>    </dependency>    <dependency>      <groupId>com.fasterxml.jackson.core</groupId>      <artifactId>jackson-core</artifactId>      <version>2.6.3</version>    </dependency>    <dependency>      <groupId>com.fasterxml.jackson.core</groupId>      <artifactId>jackson-annotations</artifactId>      <version>2.6.3</version>    </dependency>    <dependency>      <groupId>com.mchange</groupId>      <artifactId>c3p0</artifactId>      <version>${c3p0.version}</version>    </dependency>    <dependency>      <groupId>dom4j</groupId>      <artifactId>dom4j</artifactId>      <version>1.6.1</version>    </dependency>  </dependencies>  <build>    <finalName>web</finalName>  </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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"         version="3.0">  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <!-- 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>/*</url-pattern>  </filter-mapping>  <!-- 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-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></web-app>

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-4.3.xsd                        http://www.springframework.org/schema/context                        http://www.springframework.org/schema/context/spring-context-4.3.xsd                        http://www.springframework.org/schema/mvc                        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">    <!-- 自动扫描 -->    <context:component-scan base-package="cn.com.tiza.web" />    <!-- 引入配置文件 -->    <bean id="propertyConfigurer"          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="location" value="classpath:datasource.properties" />    </bean>    <bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <!-- 指定连接数据库的驱动-->        <property name="driverClass" value="${jdbc.driverClassName}"/>        <!-- 指定连接数据库的URL-->        <property name="jdbcUrl" value="${jdbc.url}"/>        <!-- 指定连接数据库的用户名-->        <property name="user" value="${jdbc.username}"/>        <!-- 指定连接数据库的密码-->        <property name="password" value="${jdbc.password}"/>        <!-- 指定连接池中保留的最大连接数. Default:15-->        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>        <!-- 指定连接池中保留的最小连接数-->        <property name="minPoolSize" value="${jdbc.minPoolSize}"/>        <!-- 指定连接池的初始化连接数  取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>        <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->        <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->        <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>        <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。        但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->        <property name="maxStatements" value="${jdbc.maxStatements}"/>        <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->        <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>    </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>    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>    </bean>    <!-- 接口所在包名,Spring会自动查找其下的类 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="cn.com.tiza.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-4.3.xsd                        http://www.springframework.org/schema/context                        http://www.springframework.org/schema/context/spring-context-4.3.xsd                        http://www.springframework.org/schema/mvc                        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">    <!-- 自动扫描 -->    <context:component-scan base-package="cn.com.tiza.web" />    <!-- 引入配置文件 -->    <bean id="propertyConfigurer"          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="location" value="classpath:datasource.properties" />    </bean>    <bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <!-- 指定连接数据库的驱动-->        <property name="driverClass" value="${jdbc.driverClassName}"/>        <!-- 指定连接数据库的URL-->        <property name="jdbcUrl" value="${jdbc.url}"/>        <!-- 指定连接数据库的用户名-->        <property name="user" value="${jdbc.username}"/>        <!-- 指定连接数据库的密码-->        <property name="password" value="${jdbc.password}"/>        <!-- 指定连接池中保留的最大连接数. Default:15-->        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>        <!-- 指定连接池中保留的最小连接数-->        <property name="minPoolSize" value="${jdbc.minPoolSize}"/>        <!-- 指定连接池的初始化连接数  取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>        <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->        <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->        <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>        <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。        但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->        <property name="maxStatements" value="${jdbc.maxStatements}"/>        <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->        <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>    </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>    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>    </bean>    <!-- 接口所在包名,Spring会自动查找其下的类 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="cn.com.tiza.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>

logback.xml

<configuration scan="true" scanPeriod="60 seconds" debug="false">    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n            </pattern>        </encoder>    </appender>    <appender name="tstar" class="ch.qos.logback.classic.sift.SiftingAppender">        <discriminator>            <Key>role</Key>            <DefaultValue>web</DefaultValue>        </discriminator>        <sift>            <appender name="FILE-${role}"                      class="ch.qos.logback.core.rolling.RollingFileAppender">                <File>D:/tstar/tstar-service/logs/tstar-${role}.log</File>                <rollingPolicy                        class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">                    <FileNamePattern>/tstar/tstar-service/logs/tstar-${role}.%i.log</FileNamePattern>                    <MinIndex>1</MinIndex>                    <MaxIndex>100</MaxIndex>                </rollingPolicy>                <triggeringPolicy                        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">                    <MaxFileSize>50MB</MaxFileSize>                </triggeringPolicy>                <Append>true</Append>                <layout class="ch.qos.logback.classic.PatternLayout">                    <Pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n                    </Pattern>                </layout>            </appender>        </sift>    </appender>    <logger name="cn.com.tiza.web" additivity="false" >        <level value="DEBUG" />        <appender-ref ref="STDOUT" />    </logger>    <root level="INFO">        <appender-ref ref="STDOUT" />    </root></configuration>

datasource.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://192.168.103.201:3306/waterjdbc.username=tempjdbc.password=tempjdbc.initialPoolSize=20jdbc.maxPoolSize=100jdbc.minPoolSize=10jdbc.maxIdleTime=600jdbc.acquireIncrement=5jdbc.maxStatements=5jdbc.idleConnectionTestPeriod=60

UserMapper.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="cn.com.tiza.web.mapper.UserMapper">    <select id="getUserById" resultType="cn.com.tiza.web.vo.User" parameterType="String">        SELECT        user_id id,        name name,        address address        FROM t_user        WHERE        user_id = #{id}    </select></mapper>
原创粉丝点击