• 一个基本的spring+mybatis所需要的包


    spring+mybatis需要的包:
    org.springframework.spring-webmvc(spring框架DispatcherServlet需要,spring-webmvc会依赖spring-context,spring-context依赖其它主要spring包)
    org.springframework.spring-jdbc(jdbc需要,依赖spring-tx)
    org.mybatis.mybatis(mybatis-spring需要)
    org.mybatis.mybatis-spring(SqlSessionFactory创建需要,mybatis需要)
    mysql.mysql-connector-java(mysql数据库驱动需要)

    其它包:
    javax.servlet.javax.servlet-api(HttpServletRequest,HttpServletResponse需要)
    org.apache.httpcomponents.httpclient(调用其它工程的接口时需要)
    log4j.log4j(mybatis需要)
    junit.junit(test需要)

    druid连接池:需要的包:
    com.alibaba.druid(创建数据源需要,druid数据库连接池需要)
    可展示Druid的统计信息

    c3p0连接池:需要的包
    c3p0.c3p0

    DBCP连接池:需要的包
    commons-dbcp.commons-dbcp

    JNDI连接池:需要的包
    spring-context

    log4j:需要的包
    log4j.log4j(mybatis需要)

    logback:需要的包
    ch.qos.logback.logback-classic(依赖logback-core)

    pom.xml

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.jmu.ccjoin</groupId>
      5     <artifactId>Spring-mybatis</artifactId>
      6     <packaging>war</packaging>
      7     <version>0.0.1-SNAPSHOT</version>
      8     <name>Spring-mybatis</name>
      9     <url>http://maven.apache.org</url>
     10 
     11     <properties>
     12         <spring.version>4.3.0.RELEASE</spring.version>
     13     </properties>
     14     <dependencies>
     15         <!-- servlet -->
     16         <dependency>
     17             <groupId>javax.servlet</groupId>
     18             <artifactId>javax.servlet-api</artifactId>
     19             <version>4.0.1</version>
     20             <scope>provided</scope>
     21         </dependency>
     22 
     23         <!-- spring-webmvc 依赖了这个包,会自动依赖其它的spring包 -->
     24         <dependency>
     25             <groupId>org.springframework</groupId>
     26             <artifactId>spring-webmvc</artifactId>
     27             <version>${spring.version}</version>
     28         </dependency>
     29 
     30         <dependency>
     31             <groupId>org.springframework</groupId>
     32             <artifactId>spring-jdbc</artifactId>
     33             <version>${spring.version}</version>
     34         </dependency>
     35 
     36         <!-- Mybatis -->
     37         <dependency>
     38             <groupId>org.mybatis</groupId>
     39             <artifactId>mybatis</artifactId>
     40             <version>3.2.0</version>
     41         </dependency>
     42 
     43         <!-- Mybatis+Spring整合 -->
     44         <dependency>
     45             <groupId>org.mybatis</groupId>
     46             <artifactId>mybatis-spring</artifactId>
     47             <version>1.2.0</version>
     48         </dependency>
     49 
     50         <!-- mysql数据库驱动 -->
     51         <dependency>
     52             <groupId>mysql</groupId>
     53             <artifactId>mysql-connector-java</artifactId>
     54             <version>5.1.40</version>
     55         </dependency>
     56 
     57         <!-- druid数据源 -->
     58         <dependency>
     59             <groupId>com.alibaba</groupId>
     60             <artifactId>druid</artifactId>
     61             <version>1.0.13</version>
     62         </dependency>
     63 
     64         <!-- c3p0数据源 -->
     65         <dependency>
     66             <groupId>c3p0</groupId>
     67             <artifactId>c3p0</artifactId>
     68             <version>0.9.1.2</version>
     69         </dependency>
     70 
     71         <!-- DBCP -->
     72         <dependency>
     73             <groupId>commons-dbcp</groupId>
     74             <artifactId>commons-dbcp</artifactId>
     75             <version>1.4</version>
     76         </dependency>
     77 
     78         <!-- log4j -->
     79         <dependency>
     80             <groupId>log4j</groupId>
     81             <artifactId>log4j</artifactId>
     82             <version>1.2.17</version>
     83         </dependency>
     84 
     85         <!-- logback -->
     86         <dependency>
     87             <groupId>ch.qos.logback</groupId>
     88             <artifactId>logback-classic</artifactId>
     89             <version>1.0.6</version>
     90         </dependency>
     91         
     92         <!-- 测试 -->
     93         <dependency>
     94             <groupId>junit</groupId>
     95             <artifactId>junit</artifactId>
     96             <version>3.8.1</version>
     97             <scope>test</scope>
     98         </dependency>
     99         
    100         <!-- 支持CGLIB代理 -->
    101         <dependency>
    102             <groupId>cglib</groupId>
    103             <artifactId>cglib</artifactId>
    104             <version>3.1</version>
    105         </dependency>
    106 
    107         <!-- httpClient -->
    108         <dependency>
    109             <groupId>org.apache.httpcomponents</groupId>
    110             <artifactId>httpclient</artifactId>
    111             <version>4.3.5</version>
    112             <scope>compile</scope>
    113         </dependency>
    114     </dependencies>
    115     <build>
    116         <finalName>Spring-mybatis</finalName>
    117     </build>
    118 </project>

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     5     version="2.5">
     6     <display-name>spring-mybatis</display-name>
     7     <context-param>
     8         <param-name>contextConfigLocation</param-name>
     9         <param-value>classpath:applicationContext.xml</param-value>
    10     </context-param>
    11     <context-param>
    12         <param-name>log4jConfigLocation</param-name>
    13         <param-value>classpath:logback.xml</param-value>
    14     </context-param>
    15     <listener>
    16         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    17     </listener>
    18 
    19     <!-- <listener>
    20         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    21     </listener> -->
    22 
    23     <servlet>
    24         <servlet-name>servlet</servlet-name>
    25         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    26         <init-param>
    27             <param-name>contextConfigLocation</param-name>
    28             <param-value>classpath:servlet.xml</param-value>
    29         </init-param>
    30     </servlet>
    31     <servlet-mapping>
    32         <servlet-name>servlet</servlet-name>
    33         <url-pattern>*.action</url-pattern>
    34     </servlet-mapping>
    35 
    36 </web-app>

    applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans
     5            http://www.springframework.org/schema/beans/spring-beans.xsd
     6            http://www.springframework.org/schema/context
     7            http://www.springframework.org/schema/context/spring-context.xsd">
     8 
     9     <!-- 加载配置文件 -->
    10     <context:property-placeholder
    11         ignore-resource-not-found="true" ignore-unresolvable="true"
    12         location="file:/var/opt/spring-mybatis/config.properties" />
    13     <context:component-scan
    14         base-package="com.jmu.ccjoin.entity,com.jmu.ccjoin.service,com.jmu.ccjoin.core,com.jmu.ccjoin.controller" />
    15         
    16     <context:annotation-config />
    17     <import resource="classpath:applicationContext_datasource.xml"/>
    18 </beans>

    applicationContext_datasource.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans
     5            http://www.springframework.org/schema/beans/spring-beans.xsd
     6            http://www.springframework.org/schema/context
     7            http://www.springframework.org/schema/context/spring-context.xsd">
     8 
     9     <!-- 自带的jndi连接池/这里使用了tomcat下的数据源 -->
    10     <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    11         <property name="jndiName" value="java:comp/env/ccjoinDataSource" />
    12     </bean>
    13 
    14     <!-- 配置Druid数据源 -->
    15     <!-- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
    16         init-method="init" destroy-method="close"> <property name="driverClassName" 
    17         value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" 
    18         /> <property name="username" value="${jdbc.username}" /> <property name="password" 
    19         value="${jdbc.password}" /> <property name="maxActive" value="${jdbc.maxPoolSize}" 
    20         /> <property name="initialSize" value="${jdbc.initialPoolSize}" /> <property 
    21         name="maxWait" value="${jdbc.maxIdleTime}" /> <property name="filters" value="stat,log4j" 
    22         /> </bean> -->
    23 
    24     <!-- c3p0连接池 -->
    25     <!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
    26         destroy-method="close"> <property name="driverClass" value="${jdbc.driverClassName}"></property> 
    27         <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" 
    28         value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> 
    29         <property name="minPoolSize" value="${jdbc.minPoolSize}" /> <property name="maxPoolSize" 
    30         value="${jdbc.maxPoolSize}" /> <property name="initialPoolSize" value="${jdbc.initialPoolSize}" 
    31         /> <property name="maxIdleTime" value="${jdbc.maxIdleTime}" /> </bean> -->
    32 
    33     <!-- DBCP连接池 -->
    34     <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    35         destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" 
    36         /> <property name="url" value="${jdbc.url}" /> <property name="username" 
    37         value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" 
    38         /> <property name="initialSize" value="${jdbc.initialPoolSize}" /> <property 
    39         name="maxIdle" value="${jdbc.maxPoolSize}" /> <property name="minIdle" value="${jdbc.minPoolSize}" 
    40         /> <property name="maxActive" value="${jdbc.maxIdleTime}" /> </bean> -->
    41 
    42     <!-- MyBatis SqlSessionFactoryBean 配置 -->
    43     <!-- <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> 
    44         <property name="dataSource" ref="dataSource" /> <property name="configLocation" 
    45         value="classpath:mybatis/mybatis-config.xml" /> <property name="typeAliasesPackage" 
    46         value="com.jmu.ccjoin.entity" /> <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml" 
    47         /> </bean> -->
    48 
    49     <!-- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    50         <property name="dataSource"> <ref bean="dataSource" /> </property> <property 
    51         name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> 
    52         <property name="typeAliasesPackage" value="com.jmu.ccjoin.entity" /> <property 
    53         name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml" /> </bean> -->
    54     <!-- mybatis文件 -->
    55     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    56         <property name="dataSource" ref="dataSource"></property>
    57         <!-- <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> -->
    58         <!-- 批量定义别名 ,指定包名,自动扫描包中的类,别名即为类名,首字母大小写无所谓 -->
    59         <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
    60         <property name="typeAliasesPackage" value="com.jmu.ccjoin.entity"></property>
    61         <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"></property>
    62     </bean>
    63 
    64     <!-- 配置事务 -->
    65     <bean id="transactionManager"
    66         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    67         <property name="dataSource" ref="dataSource" />
    68     </bean>
    69 
    70 
    71     <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    72         <property name="basePackage" value="com.jmu.ccjoin.dao"></property>
    73         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    74     </bean>
    75 </beans>           

    file:/var/opt/spring-mybatis/config.properties

    1 jdbc.driverClassName=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://172.16.1.23:3306/jmuv3?useUnicode=true&characterEncoding=utf8
    3 jdbc.username=root
    4 jdbc.password=123.com
    5 jdbc.minPoolSize=5
    6 jdbc.maxPoolSize=30
    7 jdbc.initialPoolSize=10
    8 jdbc.maxIdleTime=1800

    servlet.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <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"
     3     xmlns:mvc="http://www.springframework.org/schema/mvc"
     4     xsi:schemaLocation="
     5      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
     6      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     7      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
     8 
     9     <context:component-scan
    10         base-package="com.jmu.ccjoin.controller" />
    11 
    12     <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
    13     <!-- <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> -->
    14 
    15     <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    16         <property name="messageConverters">
    17             <list>
    18                 <ref bean="mappingJacksonHttpMessageConverter" />json转换器
    19             </list>
    20         </property>
    21     </bean> -->
    22 
    23     <!-- <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
    24         <property name="resourceLoaderPath">
    25             <value>/WEB-INF/view</value>
    26         </property>
    27         <property name="velocityProperties">
    28             <props>
    29                 <prop key="input.encoding">UTF-8</prop>
    30                 <prop key="output.encoding">UTF-8</prop>
    31                 <prop key="velocimacro.library">control/macros.vm</prop>
    32             </props>
    33         </property>
    34     </bean> -->
    35     
    36     <!-- 拦截器 -->
    37     <mvc:interceptors>
    38         <bean class="com.jmu.ccjoin.interceptor.LogInterceptor" />
    39     </mvc:interceptors>
    40 </beans>

    logback.xml

      1 <?xml version="1.0" encoding="UTF-8" ?>
      2 
      3 <!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
      4 <!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
      5 <!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
      6 <!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
      7 <!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
      8 <!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
      9 <configuration scan="true" scanPeriod="60 seconds" debug="false">
     10 
     11     <!-- 动态日志级别 -->
     12     <jmxConfigurator/>
     13 
     14     <!-- 定义日志文件 输出位置 -->
     15 <!--     <property name="log_dir" value="logs"/> -->
     16 
     17     <!-- 日志最大的历史 30天 -->
     18 <!--     <property name="maxHistory" value="30"/> -->
     19 
     20     <!-- ConsoleAppender 控制台输出日志 -->
     21     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     22         <encoder>
     23             <pattern>
     24                 <!-- 设置日志输出格式 -->
     25                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
     26             </pattern>
     27         </encoder>
     28     </appender>
     29 
     30     <!-- ERROR级别日志 -->
     31     <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
     32     <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
     33         <!-- 过滤器,只记录WARN级别的日志 -->
     34         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
     35         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     36             <!-- 设置过滤级别 -->
     37             <level>ERROR</level>
     38             <!-- 用于配置符合过滤条件的操作 -->
     39             <onMatch>ACCEPT</onMatch>
     40             <!-- 用于配置不符合过滤条件的操作 -->
     41             <onMismatch>DENY</onMismatch>
     42         </filter>
     43         <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
     44         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     45             <!--日志输出位置 可相对、和绝对路径 -->
     46             <fileNamePattern>
     47                 ${log.home_url}/error/%d{yyyy-MM-dd}/shop-admin.log
     48             </fileNamePattern>
     49             <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
     50             <maxHistory>${log.maxHistory}</maxHistory>
     51         </rollingPolicy>
     52         <encoder>
     53             <pattern>
     54                 <!-- 设置日志输出格式 -->
     55                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
     56             </pattern>
     57         </encoder>
     58     </appender>
     59 
     60 
     61     <!-- WARN级别日志 appender -->
     62     <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
     63         <!-- 过滤器,只记录WARN级别的日志 -->
     64         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
     65         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     66             <!-- 设置过滤级别 -->
     67             <level>WARN</level>
     68             <!-- 用于配置符合过滤条件的操作 -->
     69             <onMatch>ACCEPT</onMatch>
     70             <!-- 用于配置不符合过滤条件的操作 -->
     71             <onMismatch>DENY</onMismatch>
     72         </filter>
     73         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     74             <!--日志输出位置 可相对、和绝对路径 -->
     75             <fileNamePattern>${log.home_url}/warn/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
     76             <maxHistory>${log.maxHistory}</maxHistory>
     77         </rollingPolicy>
     78         <encoder>
     79             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
     80         </encoder>
     81     </appender>
     82 
     83 
     84     <!-- INFO级别日志 appender -->
     85     <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
     86         <filter class="ch.qos.logback.classic.filter.LevelFilter">
     87             <level>INFO</level>
     88             <onMatch>ACCEPT</onMatch>
     89             <onMismatch>DENY</onMismatch>
     90         </filter>
     91         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     92             <fileNamePattern>${log.home_url}/info/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
     93             <maxHistory>${log.maxHistory}</maxHistory>
     94         </rollingPolicy>
     95         <encoder>
     96             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
     97         </encoder>
     98     </appender>
     99 
    100 
    101     <!-- DEBUG级别日志 appender -->
    102     <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    103         <filter class="ch.qos.logback.classic.filter.LevelFilter">
    104             <level>DEBUG</level>
    105             <onMatch>ACCEPT</onMatch>
    106             <onMismatch>DENY</onMismatch>
    107         </filter>
    108         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    109             <fileNamePattern>${log.home_url}/debug/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
    110             <maxHistory>${log.maxHistory}</maxHistory>
    111         </rollingPolicy>
    112         <encoder>
    113             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
    114         </encoder>
    115     </appender>
    116 
    117 
    118     <!-- TRACE级别日志 appender -->
    119     <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    120         <filter class="ch.qos.logback.classic.filter.LevelFilter">
    121             <level>TRACE</level>
    122             <onMatch>ACCEPT</onMatch>
    123             <onMismatch>DENY</onMismatch>
    124         </filter>
    125         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    126             <fileNamePattern>${log.home_url}/trace/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
    127             <maxHistory>${log.maxHistory}</maxHistory>
    128         </rollingPolicy>
    129         <encoder>
    130             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
    131         </encoder>
    132     </appender>
    133 
    134 
    135     <!-- root级别   DEBUG -->
    136     <root>
    137         <!-- 打印debug级别日志及以上级别日志 -->
    138         <level value="debug"/>
    139         <!-- 控制台输出 -->
    140         <appender-ref ref="console"/>
    141         <!-- 文件输出 -->
    142         <appender-ref ref="ERROR"/>
    143         <appender-ref ref="INFO"/>
    144         <appender-ref ref="WARN"/>
    145         <appender-ref ref="DEBUG"/>
    146         <appender-ref ref="TRACE"/>
    147     </root>
    148 </configuration>
  • 相关阅读:
    LeetCode First Bad Version (二分查找)
    LeetCode Permutations II (全排列)
    LeetCode Permutations (全排列)
    LeetCode Minimum Path Sum (简单DP)
    LeetCode Binary Tree Postorder Traversal(数据结构)
    LeetCode Sort Colors (技巧)
    邹忌
    参数传递
    父子窗体返回值与互操作
    其他数据库连接
  • 原文地址:https://www.cnblogs.com/wzk-0000/p/9405399.html
Copyright © 2020-2023  润新知