ssm框架整合

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!--导入外部配置文件 --> <!-- <context:property-placeholder location="classpath:/db-oracle.properties"/> -->

<context:property-placeholder location="classpath:/db-mysql.properties"/>

<!-- 扫描包 -->

<context:component-scan base-package="cn.tarena.ht.service" />

<!-- 数据源 --> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> </beans>

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: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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- MVC注解驱动 -->

mvc:annotation-driven/

<!-- 配置扫描器,使得@Controller注解生效 -->

<context:component-scan base-package="cn.tarena.ht.controller" />

<!-- 定义视图解析器 --> <!-- prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" -> "/WEB-INF/jsp/test.jsp" --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/pages/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> <!-- 处理静态资源被“/”所拦截的问题 -->

<mvc:default-servlet-handler /> </beans>

db-mysql.properties

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ht?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=root

db-oracle.properties

jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:XE jdbc.username=ht1703 jdbc.password=ht1703

log4j.properties

log4j.rootLogger=DEBUG,A1 log4j.logger.org.mybatis = info log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

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\_2\_5.xsd" id="jt-manage" version="2.5"> <display-name>ht</display-name>

<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext\*.xml</param-value> </context-param> <!--Spring的ApplicationContext 载入 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 编码过滤器,以UTF8编码 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/\*</url-pattern> </filter-mapping> <filter> <!--过滤器的名称 必须与bean标签中的ID一致 --> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <!--将Spring容器中的filter对象交给Web容器管理,web容器管理该Filter的生命周期 --> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/\*</url-pattern> </filter-mapping> <!-- 配置SpringMVC --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定SpringMVC配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

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> <!-- 开启驼峰自动映射 --> <setting name="mapUnderscoreToCamelCase" value="true" /> <!-- 二级缓存的总开关 --> <setting name="cacheEnabled" value="false" /> </settings> <plugins> <!-- 分页插件:com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 方言 --> <property name="dialect" value="oracle" /> <!-- 该参数默认为false --> <!-- 设置为true时,使用RowBounds分页会进行count查询,查询数据总条数 --> <property name="rowBoundsWithCount" value="true" /> </plugin>
1 <!-- 通用Mapper插件 --> 2 <!-- <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"> 3 主键自增回写方法,默认值MYSQL,详细说明请看文档 4 property name="IDENTITY" value="MYSQL" / 5 通用Mapper接口,多个通用接口用逗号隔开 6 <property name="mappers" value="cn.tarena.ht.mapper.base.SysMapper" /> 7 </plugin> --> 8 9
</plugins> </configuration>

DeptMapper.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.tarena.ht.mapper.DeptMapper"> <!--查询部门的全部信息 --> <select id="findAll" resultMap="deptRM"> SELECT \* FROM dept\_p d LEFT JOIN (SELECT dept\_id p\_id,dept\_name p\_NAME FROM dept\_p)p ON d.parent\_id = p.p\_id ORDER BY dept\_id </select> <resultMap type="Dept" id="deptRM" autoMapping="true"> <id column="dept\_id" property="deptId"/> <!--其他属性驼峰规则自动完成映射 -->
1 <!--自关联 一对一--> 2 <association property="parentDept" javaType="Dept"> 3 <id column="p\_id" property="deptId"/> 4 <result column="p\_name" property="deptName"/> 5 </association>
</resultMap> <!--状态的修改 接口文件传递的是一个array--> <update id="updateState"> update dept\_p set state = #{state} where dept\_id in( <!--map中的Key --> <foreach collection="deptIds" item="deptId" separator=","> #{deptId} </foreach> ) </update> <!--删除部门信息 --> <delete id="deleteDepts"> delete from dept\_p where dept\_id in( <foreach collection="array" item="deptId" separator=","> #{deptId} </foreach> ) </delete> <insert id="saveDept"> insert into dept\_p(dept\_id,parent\_id,dept\_name,state,create\_time) values( #{deptId}, #{parentDept.deptId}, #{deptName}, #{state}, #{createTime} ) </insert> <select id="findOne" resultMap="deptRM"> select \* from dept\_p d left join (select dept\_id p\_id,dept\_name p\_name from dept\_p)p on d.parent\_id = p.p\_id where dept\_id = #{deptId} </select> <update id="updateDept"> update dept\_p set parent\_id = #{parentDept.deptId}, dept\_name = #{deptName}, state = #{state}, update\_time = #{updateTime}
  where dept\_id =  #{deptId}
</update> </mapper>

DeptMapper

package cn.tarena.ht.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.tarena.ht.pojo.Dept;

public interface DeptMapper { //查询全部部门信息 public List<Dept> findAll();

//将参数封装为一个Map public void updateState(@Param("deptIds") String[] deptIds, @Param("state") int state);

//根据deptId 删除部门信息 public void deleteDepts(String[] deptIds);

//部门的新增 public void saveDept(Dept dept);

//根据Id查询数据 public Dept findOne(String deptId);

//修改部门信息 public void updateDept(Dept dept); }

applicationContext-mybatis.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 构造SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 定义数据源 --> <property name="dataSource" ref="dataSource"/> <!-- mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> <!-- 别名包 --> <property name="typeAliasesPackage" value="cn.tarena.ht.pojo"/> <!-- mapper.xml --> <property name="mapperLocations" value="classpath:mybatis/mappers/\*.xml"/> </bean> <!-- 定义Mapper接口扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描mapper包 --> <property name="basePackage" value="cn.tarena.ht.mapper"/> </bean> </beans>

applicationContext-shiro.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<!--将Shiro的全部的组件以bean的形式交给Spring管理 -->
1<bean id="lifeCycleBeanProcessor" 2class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean>
<!--为Shiro形成切面,将来以AOP的形式进行调用 -->
1<bean 2class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" 3depends-on="lifeCycleBeanProcessor"> 4 <!--表示以cglib生成代理对象 5 1.有无接口 都可以生成代理对象 6 2.代理对象是目标对象的子类 7 Shiro中必须以cglib的形式生成代理对象 8 --> 9 <property name="proxyTargetClass" value="true"></property> 10</bean>
<!--以cgLib的形式生成AOP -->

<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

<!--该对象是Shiro中最重要的模块. -->
1<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 2 3 4 <!--必须注入Relam提供真实的信息,方便做判断 --> 5 6 <property name="realm" ref="AuthRealm"></property> 7</bean> 8 9 10<!--自定义Realm 是我们自己手动编写的.里边需要提供真实的用户数据 --> 11<bean id="AuthRealm" class="cn.tarena.ht.shiro.AuthRealm"> 12 13 <!--引入自定义的加密器 --> 14 <property name="credentialsMatcher" ref="authCredential"></property> 15</bean> 16 17<bean id="authCredential" class="cn.tarena.ht.shiro.AuthCredential"></bean>
<!--配置权限认证的通知 -->
1<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> 2 3 <!--表示注入安全中心,以后做校验 --> 4 <property name="securityManager" ref="securityManager"></property> 5</bean>
<!--该过滤器应该放置到web容器中,如果放置到Spring容器中将不起作用. -->
1<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 2 <!--注入安全中心 --> 3 <property name="securityManager" ref="securityManager"></property> 4 5 6 <!--只要没有经过认证的请求,都会被拦截到指定页面 --> 7 <property name="loginUrl" value="/index.jsp"></property> 8 9 <property name="filterChainDefinitions"> 10 <value> 11 <!--如果什么都不加比较无需拦截,直接跳转 12 13 /\* 表示只拦截请求 不拦截静态资源文件 14 /\*\* 表示拦截全部的资源 包括请求和静态资源文件 15 16 authc 表示拦截 17 anon 表示放行 18 --> 19 /toLogin.action = anon 20 /login.action = anon 21 /staticfile/\*\* = anon 22 /\*\* = authc 23 24 </value> 25 </property> 26 27</bean> 28
</beans>

applicationContext-transaction.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 定义事务管理器 -->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>

<!-- 定义事务策略 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager"> tx:attributes <!--定义查询方法都是只读的 --> <tx:method name="query*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="get*" read-only="true" />

1 <!-- 主库执行操作,事务传播行为定义为默认行为 --> 2 <tx:method name="save\*" propagation="REQUIRED" /> 3 <tx:method name="update\*" propagation="REQUIRED" /> 4 <tx:method name="delete\*" propagation="REQUIRED" /> 5 6 <!--其他方法使用默认事务策略 --> 7 <tx:method name="\*" read-only="true"/> 8 </tx:attributes>

</tx:advice>

aop:config <!-- 定义切面,所有的service的所有方法 --> <aop:pointcut id="txPointcut" expression="execution(* cn.tarena.ht.service..*.*(..))" /> <!-- 应用事务策略到Service切面 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config>

</beans>

DeptController

package cn.tarena.ht.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam;

import cn.tarena.ht.pojo.Dept; import cn.tarena.ht.service.DeptService;

@Controller @RequestMapping("/sysadmin/dept/") public class DeptControllr {

@Resource private DeptService deptService;

@RequestMapping("list") public String findList(Model model){ List<Dept> deptList = deptService.findAll(); model.addAttribute("deptList", deptList);

1 //跳转到部门列表页面 2 return "sysadmin/dept/jDeptList";

}

//状态的改变 @RequestMapping("stop") public String toStop(@RequestParam(value="deptId",required=true) String[] deptIds){

1 int state = 0; //表示状态停用 2 deptService.updateState(deptIds,state); 3 4 //重定向到部门列表页面 5 return "redirect:/sysadmin/dept/list";

}

@RequestMapping("start") public String toStart(@RequestParam(value="deptId",required=true) String[] deptIds){ int state = 1; //表示状态停用 deptService.updateState(deptIds,state);

1 //重定向到部门列表页面 2 return "redirect:/sysadmin/dept/list";

}

//部门删除 @RequestMapping("delete") public String toDelete(@RequestParam(value="deptId",required=true)String[] deptIds){

1 deptService.deleteDepts(deptIds); 2 3 return "redirect:/sysadmin/dept/list";

}

//跳转部门新增页面 @RequestMapping("tocreate") public String toCreate(Model model){

1 //查询部门全部列表数据 2 List<Dept> parentDeptList = deptService.findAll(); 3 model.addAttribute("parentDeptList", parentDeptList); 4 5 return "sysadmin/dept/jDeptCreate";

}

@RequestMapping("save") public String saveDept(Dept dept){

1 deptService.saveDept(dept); 2 3 return "redirect:/sysadmin/dept/list";

}

@RequestMapping("toupdate") public String updateDept(String deptId,Model model){

1 //准备修改数据 2 Dept dept = deptService.findOne(deptId); 3 4 //准备上级部门的下拉列表 5 List<Dept> parentList = deptService.findAll(); 6 model.addAttribute("dept", dept); 7 model.addAttribute("parentList", parentList); 8 9 return "sysadmin/dept/jDeptUpdate";

}

@RequestMapping("update") public String updateDept(Dept dept){

1 deptService.updateDept(dept); 2 3 return "redirect:/sysadmin/dept/list";

}

//部门查看 @RequestMapping("toview") public String toView(String deptId,Model model){

1 Dept dept = deptService.findOne(deptId); 2 model.addAttribute("dept", dept); 3 4 //跳转到查看页面 5 return "sysadmin/dept/jDeptView";

}

}

Dept

package cn.tarena.ht.pojo; //部门对象 public class Dept extends BaseEntity{ private String deptId; private Dept parentDept; //一对一关联关系 private String deptName; //部门名称 private Integer state; //部门状态 1启用 0停用

public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public Dept getParentDept() { return parentDept; } public void setParentDept(Dept parentDept) { this.parentDept = parentDept; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } @Override public String toString() { return "Dept [deptId=" + deptId + ", parentDept=" + parentDept + ", deptName=" + deptName + ", state=" + state + "]"; }

}

DeptService

package cn.tarena.ht.service;

import java.util.List;

import cn.tarena.ht.pojo.Dept;

public interface DeptService { public List<Dept> findAll();

public void updateState(String[] deptIds, int state);

public void deleteDepts(String[] deptIds);

public void saveDept(Dept dept);

public Dept findOne(String deptId);

public void updateDept(Dept dept); }

DeptServiceImpl

package cn.tarena.ht.service.impl;

import java.util.Date; import java.util.List;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

import cn.tarena.ht.mapper.DeptMapper; import cn.tarena.ht.pojo.Dept; import cn.tarena.ht.service.DeptService; @Service public class DeptServiceImpl implements DeptService {

@Autowired private DeptMapper deptMapper;

@Override public List<Dept> findAll() {

  return deptMapper.findAll();

}

@Override public void updateState(String[] deptIds, int state) {

  deptMapper.updateState(deptIds,state);

}

@Override public void deleteDepts(String[] deptIds) {

1 deptMapper.deleteDepts(deptIds); 2

}

@Override public void saveDept(Dept dept) {

1 dept.setCreateTime(new Date()); //添加新增日期 2 deptMapper.saveDept(dept); 3

}

@Override public Dept findOne(String deptId) {

  return deptMapper.findOne(deptId);

}

@Override public void updateDept(Dept dept) { dept.setUpdateTime(new Date()); deptMapper.updateDept(dept);

}

}

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.tedu</groupId> <artifactId>HT1703</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>HT1703 Maven Webapp</name> <url>http://maven.apache.org</url>

<!-- 集中定义依赖版本号 --> <properties> <junit.version>4.12</junit.version> <spring.version>4.2.3.RELEASE</spring.version>
1 <mybatis.version>3.2.8</mybatis.version> 2 <mybatis.spring.version>1.2.2</mybatis.spring.version> 3 <mybatis.paginator.version>1.2.15</mybatis.paginator.version> 4 <mysql.version>5.1.32</mysql.version> 5 <bonecp-spring.version>0.8.0.RELEASE</bonecp-spring.version> 6 <druid.version>1.0.9</druid.version> 7 8 <mapper.version>2.3.2</mapper.version> 9 <pagehelper.version>3.4.2</pagehelper.version> 10 <jsqlparser.version>0.9.1</jsqlparser.version> 11 12 <slf4j.version>1.6.4</slf4j.version> 13 <jstl.version>1.2</jstl.version> 14 <servlet-api.version>2.5</servlet-api.version> 15 <jsp-api.version>2.0</jsp-api.version> 16 <jackson.version>2.4.2</jackson.version> 17
</properties> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</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-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency>
1 <!-- Mybatis --> 2 <dependency> 3 <groupId>org.mybatis</groupId> 4 <artifactId>mybatis</artifactId> 5 <version>${mybatis.version}</version> 6 </dependency> 7 <dependency> 8 <groupId>org.mybatis</groupId> 9 <artifactId>mybatis-spring</artifactId> 10 <version>${mybatis.spring.version}</version> 11 </dependency> 12 <dependency> 13 <groupId>com.github.miemiedev</groupId> 14 <artifactId>mybatis-paginator</artifactId> 15 <version>${mybatis.paginator.version}</version> 16 </dependency> 17 18 <!-- 通用Mapper,所有的单表的代码都不用编写 --> 19 <dependency> 20 <groupId>com.github.abel533</groupId> 21 <artifactId>mapper</artifactId> 22 <version>${mapper.version}</version> 23 </dependency> 24 25 <!--转化JSON的工具 --> 26 <dependency> 27 <groupId>com.fasterxml.jackson.core</groupId> 28 <artifactId>jackson-databind</artifactId> 29 <version>${jackson.version}</version> 30 </dependency> 31 32 33 <!-- Oracle版权问题,maven目录必须自己手动建立 --> 34 <dependency> 35 <groupId>com.oracle</groupId> 36 <artifactId>ojdbc6</artifactId> 37 <version>11.1.0.7.0</version> 38 </dependency> 39 40 <!-- MySql --> 41 <dependency> 42 <groupId>mysql</groupId> 43 <artifactId>mysql-connector-java</artifactId> 44 <version>${mysql.version}</version> 45 </dependency> 46 <!-- 超高性能连接池 --> 47 <dependency> 48 <groupId>com.zaxxer</groupId> 49 <artifactId>HikariCP-java6</artifactId> 50 <version>2.3.9</version> 51 <scope>compile</scope> 52 </dependency> 53 54 <!-- Apache Shiro 权限架构 --> 55 <dependency> 56 <groupId>org.apache.shiro</groupId> 57 <artifactId>shiro-all</artifactId> 58 <version>1.2.3</version> 59 </dependency> 60 61 <!-- 分页插件 --> 62 <dependency> 63 <groupId>com.github.pagehelper</groupId> 64 <artifactId>pagehelper</artifactId> 65 <version>${pagehelper.version}</version> 66 </dependency> 67 <dependency> 68 <groupId>com.github.jsqlparser</groupId> 69 <artifactId>jsqlparser</artifactId> 70 <version>${jsqlparser.version}</version> 71 </dependency> 72 73 <dependency> 74 <groupId>org.slf4j</groupId> 75 <artifactId>slf4j-log4j12</artifactId> 76 <version>${slf4j.version}</version> 77 </dependency> 78 79 <!-- JSP相关 --> 80 <dependency> 81 <groupId>jstl</groupId> 82 <artifactId>jstl</artifactId> 83 <version>${jstl.version}</version> 84 </dependency> 85 <dependency> 86 <groupId>javax.servlet</groupId> 87 <artifactId>servlet-api</artifactId> 88 <version>${servlet-api.version}</version> 89 <scope>provided</scope> 90 </dependency> 91 <dependency> 92 <groupId>javax.servlet</groupId> 93 <artifactId>jsp-api</artifactId> 94 <version>${jsp-api.version}</version> 95 <scope>provided</scope> 96 </dependency> 97 98 <!-- 字符加密、解密 --> 99 <dependency> 100 <groupId>commons-codec</groupId> 101 <artifactId>commons-codec</artifactId> 102 <version>1.9</version> 103 </dependency> 104 105 <!-- 数据校验 --> 106 <dependency> 107 <groupId>org.hibernate</groupId> 108 <artifactId>hibernate-validator</artifactId> 109 <version>5.1.3.Final</version> 110 </dependency> 111 <dependency> 112 <groupId>org.springframework</groupId> 113 <artifactId>spring-beans</artifactId> 114 <version>4.2.3.RELEASE</version> 115 </dependency> 116</dependencies>
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8090</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )