欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gradle + spring4 + springmvc4 + mybatis3 + driud1 + logback1(CRUD操作)

程序员文章站 2022-04-07 14:37:47
...

 

 依赖库:

gradle + spring4 + springmvc4 + mybatis3 + driud1 + logback1

 

目录结构:



gradle + spring4 + springmvc4 + mybatis3 + driud1 + logback1(CRUD操作)
            
    
    博客分类: J2EE gradlespring4springmvc4mybatis3druid 
 

 

 

build.gradle

 

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply plugin: 'jetty'

// JDK 6
sourceCompatibility = 1.6
targetCompatibility = 1.6

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
 
	compile 'ch.qos.logback:logback-classic:1.1.3'
	compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
	compile 'org.springframework:spring-tx:4.1.6.RELEASE'
	compile 'org.springframework:spring-jdbc:4.1.6.RELEASE'
	compile 'org.springframework:spring-test:4.1.6.RELEASE'
	compile 'javax.servlet:jstl:1.2'
	compile 'com.alibaba:druid:1.0.2'
	compile 'mysql:mysql-connector-java:5.1.25'
	compile 'org.mybatis:mybatis:3.2.2'
	compile 'org.mybatis:mybatis-spring:1.2.0'
	compile 'org.aspectj:aspectjweaver:1.7.2'
	compile 'org.freemarker:freemarker-gae:2.3.23'
	

}

// Embeded Jetty for testing
jettyRun{
	contextPath = "spring4"
	httpPort = 8080
}

jettyRunWar{
	contextPath = "spring4"
	httpPort = 8080
}

//For Eclipse IDE only
eclipse {

  wtp {
    component {
      
      //define context path, default to project folder name
      contextPath = 'spring4'
      
    }
    
  }
}

 

spring-core-config.xml


 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	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/tx 
		http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop.xsd">
 
 	<!-- 包扫描 -->
	<context:component-scan base-package="com.business.dao,com.business.service" />

	<!-- 1.加载数据库配置的属性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	
	<!-- 2.数据源dataSource  DRUID -->
	<!-- 配置数据源 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>

		<!-- 初始化连接大小 -->
		<property name="initialSize" value="0" />
		<!-- 连接池最大使用连接数量 -->
		<property name="maxActive" value="20" />
		<!-- 连接池最大空闲 -->
		<property name="maxIdle" value="20" />
		<!-- 连接池最小空闲 -->
		<property name="minIdle" value="0" />
		<!-- 获取连接最大等待时间 -->
		<property name="maxWait" value="60000" />
		
		<!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->

		<!-- <property name="validationQuery" value="${validationQuery}" /> -->
		<property name="testOnBorrow" value="false" />
		<property name="testOnReturn" value="false" />
		<property name="testWhileIdle" value="true" />

		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="60000" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="25200000" />

		<!-- 打开removeAbandoned功能 -->
		<property name="removeAbandoned" value="true" />
		<!-- 1800秒,也就是30分钟 -->
		<property name="removeAbandonedTimeout" value="1800" />
		<!-- 关闭abanded连接时输出错误日志 -->
		<property name="logAbandoned" value="true" />

		<!-- 监控数据库 -->
		<!-- <property name="filters" value="stat" /> -->
		<property name="filters" value="mergeStat" />
	</bean>
	
	<!-- 3.SessionFactory-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 整合mybatis,包扫描 mapper文件 -->
		<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
		<property name="mapperLocations" value="classpath:com/business/mapper/*.xml"/>
	</bean>

	<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.taurus.persistence" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean> -->

	<!-- 4. 事务 -->
	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED"/>
			<tx:method name="update*" propagation="REQUIRED"/>
			<tx:method name="delete*" propagation="REQUIRED"/>
			<tx:method name="save*" propagation="REQUIRED"/>
			
			<tx:method name="find*" read-only="true"/>
			<tx:method name="get*" read-only="true"/>
			<tx:method name="view*" read-only="true"/>
		</tx:attributes>
	</tx:advice>
	
	<aop:config>
		<aop:pointcut expression="execution(* com.business.service.*.*(..))" id="txPointcut"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
	</aop:config>
	
	
</beans>

 spring-mvc-config.xml

 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	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.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd ">
 
	<context:component-scan base-package="com.business.controller" />
 
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/WEB-INF/views/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
 
	<mvc:resources mapping="/resources/**" location="/resources/" />
	 
	<mvc:annotation-driven />
 
</beans>	

 

web.xml


 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<display-name>BusinessOnline</display-name>
	<description>Spring MVC web application</description>

	<!-- For web context -->
	<servlet>
		<servlet-name>springmvc-dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-mvc-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springmvc-dispatcher</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>

	<!-- For root context -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring-core-config.xml</param-value>
	</context-param>

	<!-- 编码过滤器,解决中文乱码  -->
	<filter>
		<filter-name>SpringEncoding</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>
	</filter>
	<filter-mapping>
		<filter-name>SpringEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

 

logback.xml


 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<layout class="ch.qos.logback.classic.PatternLayout">

			<Pattern>
				%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
			</Pattern>

		</layout>
	</appender>

	<logger name="org.springframework" level="debug" additivity="false">
		<appender-ref ref="STDOUT" />
	</logger>
	
	<logger name="com.business" level="debug" additivity="false">
		<appender-ref ref="STDOUT" />
	</logger>
	
	<root level="debug">
		<appender-ref ref="STDOUT" />
	</root>

</configuration>


 

jdbc.properties

 

 

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#jdbc.username=scott
#jdbc.password=tiger


 

 

sqlMapConfig.xm

 

 

<?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>
	
	
</configuration>

 

jar:


gradle + spring4 + springmvc4 + mybatis3 + driud1 + logback1(CRUD操作)
            
    
    博客分类: J2EE gradlespring4springmvc4mybatis3druid 
 

实体类:

package com.business.domain;

public class Student {

	private int id;
	private String username;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

 

dao

BaseDao:

 
package com.business.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;


/**
 * 泛型类  基础的dao接口
 * @author xiaoxuan
 *
 * @param <T>
 */
public interface BaseDao<T> {

//	public List<T> findPage(Page page);				//分页查询
	public List<T> find(Map paraMap);				//带条件查询,条件可以为null,既没有条件;返回list对象集合
	public T get(Serializable id);					//只查询一个,常用于修改
	public void insert(T entity);					//插入,用实体作为参数
	public void update(T entity);					//修改,用实体作为参数
	public void deleteById(Serializable id);		//按id删除,删除一条;支持整数型和字符串类型ID
	public void delete(Serializable[] ids);			//批量删除;支持整数型和字符串类型ID
	
}

 

 

StudentDao:

package com.business.dao;

import com.business.domain.Student;

public interface StudentDao extends BaseDao<Student> {

}

 

dao实现

BaseDaoImpl:
package com.business.dao.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;

import com.business.dao.BaseDao;


public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>{
	@Autowired
	//mybatis-spring 1.0无需此方法;mybatis-spring1.2必须注入。
	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){
		super.setSqlSessionFactory(sqlSessionFactory);
	}
	
	private String ns; //命名空间
	public String getNs() {
		return ns;
	}
	public void setNs(String ns) {
		this.ns = ns;
	}
	
	public List<T> find(Map paraMap) {
		List<T> oList = this.getSqlSession().selectList(ns + ".find",paraMap);
		return oList;
	} 
	
	public T get(Serializable id) {
		return this.getSqlSession().selectOne(ns + ".get", id);
	}
	
	public void insert(T entity) {
		this.getSqlSession().insert(ns + ".insert", entity);
	}
	
	public void update(T entity) {
		this.getSqlSession().update(ns + ".update", entity);
	}
	
	public void deleteById(Serializable id) {
		this.getSqlSession().delete(ns + ".deleteById", id);
	}

	public void delete(Serializable[] ids) {
		this.getSqlSession().delete(ns + ".delete", ids);
	}
	

}
 StudentDaoImpl:
package com.business.dao.impl;

import org.springframework.stereotype.Repository;

import com.business.dao.StudentDao;
import com.business.domain.Student;

@Repository
public class StudentDaoImpl extends BaseDaoImpl<Student> implements StudentDao {

	public StudentDaoImpl(){
		super.setNs("com.business.mapper.StudentMapper");
	}

}
 mapper
StudentMapper.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="com.business.mapper.StudentMapper">
	<resultMap type="com.business.domain.Student" id="stuRM">
		<id property="id" column="id" />
		
		<result property="username" column="username"/>
		<result property="password" column="password"/>
	</resultMap>

	<select id="find" parameterType="map" resultMap="stuRM" >
		select * from student 
		where 1=1
		<if test="id != null">and id=#{id}</if>
	</select>
	
	<select id="get" parameterType="integer" resultMap="stuRM">
		select * from student
		where id=#{id}
	</select>
	
	<update id="update" parameterType="com.business.domain.Student">
		update student   
		set password=#{password}
		where username=#{username}
	</update>
	
	<insert id="insert" parameterType="com.business.domain.Student">
		insert into student
		(username,password)
		values(
			#{username},
			#{password}
			<!-- <if test="type eq 'xxx' ">0,</if> -->
		)
	</insert>
	
	<delete id="deleteById" parameterType="integer">  
        delete student where id=#{id}  
   </delete> 
</mapper>
 
StudentController:
package com.business.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.business.dao.StudentDao;
import com.business.domain.Student;

@Controller
public class StudentController {

	@Autowired
	StudentDao studentDao;
	
	@RequestMapping("/test.action")
	public String testget(Model model){
		Student stu = studentDao.get(1);
		System.err.println(stu);
		model.addAttribute("stu", stu);
		return "/index";
	}
}
 
 

 

 

 

 

  • gradle + spring4 + springmvc4 + mybatis3 + driud1 + logback1(CRUD操作)
            
    
    博客分类: J2EE gradlespring4springmvc4mybatis3druid 
  • 大小: 24.7 KB