database.properties
driver=com.mysql.cj.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
url=jdbc:mysql://127.0.0.1:3306/workordermanager?serverTimezone=UTC&useUnicode=true&characterEncodin=utf-8
username=root
password=root
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> <!--mybatis-config.xml核心配置文件-->
<!-- <plugins> <!–分页支持插件–>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>-->
<!-- <properties resource="database.properties"></properties> <!–database.properties文件相对路径–>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases> <!–pojo类别名,自动加载–>
<package name="cn.com.pojo"/>
</typeAliases>
<environments default="development"> <!–数据源,找那个数据库,用户名,密码是什么–>
<environment id="development"> <!–数据库环境名字,唯一不重复–>
<transactionManager type="JDBC"/> <!–事务管理–>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers> <!–关联SQL映射PersonMapper.xml文件路径,可以有多个–>
<mapper resource="dao/person/PersonMapper.xml"/>
</mappers>-->
</configuration>
pom.xml
<!--依赖的jar包-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--Spring依赖的jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!--Spring-Mybatis依赖的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.3</version>
</dependency>
<!--Mybatis依赖的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!--Spring-DB依赖的jar包-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!--Tomcat数据源依赖的jar包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--SpringMVC依赖的jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!--JSTL-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<!--JSON数据绑定依赖的jar包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.2</version>
</dependency>
<!--SpringMVC拦截器HttpSession依赖的jar包-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<scope>provided</scope> <!--仅开发使用-->
</dependency>
<!--PageHelp分页依赖的jar包-->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
</dependencies>
<build>
<!--添加编译路径-->
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
springmvc-config.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--springmvc-config.xml 核心配置文件-->
<!--1.底层Model层配置-->
<!--注解扫描-->
<!--描注解注入bean @commpent @repository @service @controller @autowi red @resource -->
<context:component-scan base-package="cn.com.*"></context:component-scan>
<!--Aspectj注解SpringAOP需求-->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!--事务注解驱动-->
<!--@transaction (pxopagation="")-->
<tx:annotation-driven transaction-manager="txManage"/>
<!--MVC注解驱动-->
<!--JSON数据绑定,消息转换器(转换为JSON进行数据绑定)-->
<mvc:annotation-driven>
<!-- <mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</mvc:message-converters>-->
</mvc:annotation-driven>
<!--数据源,数据库连接,id数据源名,class引用的类-->
<!--<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:database.properties"></property>
</bean>-->
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/workordermanager?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!--sqlSessionFactoryBean工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--获得数据源-->
<property name="dataSource" ref="myDataSource"></property>
<property name="mapperLocations">
<list>
<value>classpath:cn/com/dao/ProjectMapper.xml</value> <!--SQL映射文件路径-->
<value>classpath:cn/com/dao/WorkorderMapper.xml</value>
</list>
</property>
<!--路径别名-->
<property name="typeAliasesPackage" value="cn.com.pojo"></property>
<!--引入mybatis-config.xml(有些只能在Mybatis配置的),如分页查询-->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!--映射器扫描-->
<!--扫描dao接口包,内部自动建立MapperFactoryBean映射器实例-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.com.dao"></property>
<!--匹配工厂(数据源),多个工厂需要手动指定工厂名字-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!--底层Model层配置结束!-->
<!--2.Service层配置-->
<!--事务管理器-->
<bean id="txManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
<!--事务增强规则-->
<tx:advice transaction-manager="txManage" id="txAdvice">
<tx:attributes> <!--通配方法名-->
<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!--切面1-->
<aop:config> <!--service所有的包所有的类监控-->
<aop:pointcut id="pointcut1" expression="execution(* cn.com.service..*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
</aop:config>
<!--3.Controller层配置-->
<!--静态资源访问,启用默认的Service-->
<mvc:default-servlet-handler />
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property> <!--页面路径-->
<property name="suffix" value=".jsp"></property>
<!--<property name="order" value="10"/>-->
<!--页面后缀-->
</bean>
</beans>
实例化对象(new一个对象)
<bean id="course1" class="cn.com.pojo.Course">
<property name="name" value="新课1"></property>
<property name="price" value="666.00"></property>
</bean>
<bean id="course2" class="cn.com.pojo.Course"
p:name="新课2" p:price="777.00"></bean>
<bean id="course3" class="cn.com.pojo.Course"
p:id="6" p:name="改课3" p:price="888.00"></bean>-->
测试类调用
//引入Spring容器实例化的对象
@Resource(name = "course1")
private Course course1;
@Resource(name = "course2")
<!-- <!–注解扫描,bean,包名加*通配符–>
<!–静态资源访问支持–>
<mvc:default-servlet-handler />
<!–视图解析器 /jsp/show.jsp–>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!–<property name="prefix" value="/WEB-INF/"></property>–>
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!–MVC注解驱动,JSON数据绑定,消息转换器(转换为JSON进行数据绑定)–>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!–拦截器注册–>
<mvc:interceptors>
<!–用户登录拦截器–>
<mvc:interceptor>
<mvc:mapping path="/user/*"></mvc:mapping>
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<bean class="cn.com.inteceptor.LoginInteceptor"></bean>
</mvc:interceptor>
<!–日志拦截器–>
</mvc:interceptors>
<!–pageHelp分页–>
<!– 配置pageHelp的拦截器 –>
<bean id="plugin" class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>helperDialect=mysql</value>
</property>
</bean>
<!–实例化课程类–>
<bean id="course1" class="cn.com.pojo.Course">
<property name="name" value="新课1"></property>
<property name="price" value="666.00"></property>
</bean>
<bean id="course2" class="cn.com.pojo.Course"
p:name="新课2" p:price="777.00"></bean>
<bean id="course3" class="cn.com.pojo.Course"
p:id="6" p:name="改课3" p:price="888.00"></bean>-->
<!--实例化workorder对象,用于添加-->
<!--(#{projectId},#{executor},#{description},#{orderLevel},#{createDate});-->
<!--(1,"李小明","完成在线答疑任务",2,new Date());-->
<!--<bean id="workorder1" class="cn.com.pojo.Workorder"
p:projectId="1" p:executor="刘明" p:description="完成在线答疑任务" p:orderLevel="2" p:createDate="2020-03-04"></bean>-->
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Archetype Created Web Application</display-name>
<!--隐藏的方法过滤器-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<!--中文乱码过滤器-->
<filter>
<filter-name>EncodeFilter</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>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--隐藏的方法过滤器-->
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--前端控制器上-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--通过前端控制器来读取springmvc-config容器配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--设置启动优先级-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--前端控制器下-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--默认的读取CSS文件的servlet-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
</web-app>