案例使用maven-web工程搭建,使用mvc架构javascript
<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>com.pxg</groupId> <artifactId>Job20190426</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Archetype - Job20190426</name> <url>http://maven.apache.org</url> <dependencies> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!-- 数据库链接 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!-- 切面使用 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!-- 事务提交 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!-- mybatis框架使用 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!-- 测试使用 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- 数据查询分页 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.4</version> </dependency> <!-- 阿里巴巴链接数据库使用 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.22</version> </dependency> <!-- mybatis整合spring使用 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- 日志使用 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.6.1</version> </dependency> </dependencies> </project>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 1.自动扫描组件 扫描包 --> <context:component-scan base-package="com.pxg.*"></context:component-scan> <!-- 引入数据库数据源 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 2.配置基本属性 username/password/ 链接池 --> <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <!-- 配置初始化大小,最小,最大 --> <property name="initialSize" value="1"></property> <property name="minIdle" value="10"></property> <property name="maxActive" value="30"></property> <!-- 配置获取链接等待超时的时间 --> <property name="timeBetweenEvictionRunsMillis" value="60000"></property> <!-- 配置间隔多久才进行一次检测,检测须要关闭的空闲时间,单位毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"></property> <property name="testWhileIdle" value="false"></property> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,而且指定每一个链接上PSCache的大小 --> <property name="poolPreparedStatements" value="false"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> <property name="defaultAutoCommit" value="true" /> <property name="validationQueryTimeout" value="60000"/> <!-- 数据库链接有效性 --> <property name="validationQuery" value="select 1 from dual" /> </bean> <!-- 3.配置链接池 数据源 --> <bean id="dataSoure_druid" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"> <property name="targetDataSource" ref="druidDataSource"></property> </bean> <!--4.建立一个sql会话工厂bean,指定数据源 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定数据源 --> <property name="dataSource" ref="dataSoure_druid"></property> <!-- 指定MyBatis核心配置文件地址 --> <property name="configLocation" value="classpath:MyBatisConfig.xml"></property> <!-- 自动扫描mapping.xml文件,注意这里的classpath后面是* 必需要的 --> <property name="mapperLocations" value="classpath*:com/pxg/mapper/*Mapper.xml"></property> <!-- pojo所在包,为pojo类取别名,别名就为类名 --> <property name="typeAliasesPackage" value="com.pxg.model"></property> <!-- 真核pageHelper分页插件 --> <property name="plugins"> <array> <!-- 插件类型 --> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties" value="helperDialect=oracle"></property> </bean> </array> </property> </bean> <!--5. MyBtis DAO所在包名,Spring或自动查找旗下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 数据源 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <!-- MyBatis DAO接口所在包名,nasePackage指定的包下面的类会自动查找 --> <property name="basePackage" value="com.pxg.dao" /> </bean> <!-- 6.事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSoure_druid"></property> </bean> <!-- 7.配置事务管理 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 排除事务方法 --> <tx:method name="get*" propagation="NEVER"/> <tx:method name="set*" propagation="NEVER"/> <tx:method name="find*" propagation="NEVER"/> <tx:method name="select*" propagation="NEVER"/> <tx:method name="query*" propagation="NEVER"/> <!-- 自动管理事务的方法 --> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <!-- 其余状况下默认 --> <tx:method name="*" propagation="SUPPORTS"/> </tx:attributes> </tx:advice> <!-- 8.事务切入到业务逻辑层 --> <aop:config> <aop:pointcut expression="execution(* com.pxg.service.*.*(..))" id="txPointcut" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" /> </aop:config> <!-- 另外一种方法开启事务、开启事务管理 --> <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> </beans>
案例使用oracle数据库,db.properties文件配置java
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl jdbc.username=scott jdbc.password=sasa
在配置使用 ApplicationContext.xml文件中mysql
<property name="validationQuery" value="select 1 from dual" />
若是使用的为mysql数据库配置为git
<property name="validationQuery" value="select 1 " />
若是使用其余数据库执行查阅资料github
这个日志文件配置了数据库输出日志,如需使用可开启注释,链接本身数据库便可web
#rootLogger debug 级别,stdout控制台,file 日志文件 db为使用类添加 DATABASE为包中添加 log4j.rootLogger=debug,stdout,file #添加控制台追加器 log4j.appender.stdout=org.apache.log4j.ConsoleAppender #添加控制台输出格式为自定义格式 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #自定义格式内容 log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%L %l %M %p %m %c %t %F %n log4j.logger.com.mybatis=DEBUG #输出sql语句 log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG #添加日志文件追加器 log4j.appender.file=org.apache.log4j.FileAppender #只是日志存放位置 log4j.appender.file.File=log4j.log #添加文件输出格式为自定义格式 log4j.appender.file.layout=org.apache.log4j.PatternLayout #自定义格式内容 log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%L %l %M %p %m %c %t %F %n #设置文件编码 log4j.appender.file.encoding=UTF-8 #添加数据库追加器 #log4j.appender.db=com.pxg.util.Log4jSQL ##直接使用log4j包中的文件 #log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender ##与数据库创建链接 #log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test #log4j.appender.DATABASE.Driver=com.mysql.jdbc.Driver #log4j.appender.DATABASE.user=root #log4j.appender.DATABASE.password=123456 ##指定要插入数据库的格式,具体参数的格式看一开始给出的文档 #log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout #log4j.appender.DATABASE.sql=INSERT INTO LOG4J(ss,xx,jb) VALUES('%d{yyyy-MM-dd HH:mm:ss}','%F%L%m','%p')
<?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="logImpl" value="LOG4J"/> </settings> </configuration>
因为本案例增长了mybatis的sql语句输出,因此进行配置mybatis文件,spring
如过不须要能够不须要配置,而且在ApplicationContext.xml文件中对mybatis配置行进行注释便可sql
<!-- 指定MyBatis核心配置文件地址 --> <property name="configLocation" value="classpath:MyBatisConfig.xml"></property>