配置Spring MVC

一,Spriing MVC 的使用
a.在generatorConfig(mysql).xml配置mybatis实体类进行自动生成bean,Mappper,dao等。
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration>
	<!-- 设置mysql自动生成文件jar包路径 -->
	<classPathEntry
		location="./WebContent/WEB-INF/lib/mybatis-generator-core-1.3.1.jar" />
	<!-- 此处指定生成针对MyBatis3的DAO -->
	<context id="context" targetRuntime="MyBatis3">

		<commentGenerator>
			<property name="suppressAllComments" value="true" />
			<property name="defaultModelType" value="hierarchical"/>
		</commentGenerator>

		<!-- jdbc连接信息 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db" userId="root" password="123456" />

		<!-- 生成entity对象及保存路径 -->
		<javaModelGenerator targetPackage="com.controller.bean"
			targetProject="src" />

		 <!-- 生成xml文件以及配置文件及保存路径 -->
		<sqlMapGenerator targetPackage="com.controller.mapper"
			targetProject="src" />

		<!-- 生成用于查询的dao对象及保存路径 -->
		 <javaClientGenerator targetPackage="com.controller.dao"
			targetProject="src" type="XMLMAPPER" /> 


	<!-- 想要生成的数据库表,自动化工具会根据该表的结构生成相应的vo对象 -->
		
		<table schema="" tableName="数据库表名"
			domainObjectName="生成实体类名" enableCountByExample="false"
			enableUpdateByExample="false" enableDeleteByExample="false"
			enableSelectByExample="false" selectByExampleQueryId="false" />
			
	</context>

</generatorConfiguration>

b.在MyBatisGeneratorTool.java程序中进行读取生成相应的文件,生成之后刷新即可看到。

package config.mybatis;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * MyBatis工具类:自动生成代码
 * @author Studio
 *
 */
public class MyBatisGeneratorTool_mysql {
	
	private static Logger log = Logger.getLogger(MyBatisGeneratorTool_mysql.class);
	
	public static void main(String[] args){
		
		try {
			
			// 读取使用Java的特性文件编写的配置文件。
//			PropertyConfigurator.configure("//config//mybatis//log4j.properties");
			
			List<String> warnings = new ArrayList<String>();
			
			boolean overwrite = true;
			
			// generator文件路径
			String genCfg = "/config/mybatis/generatorConfig(mysql).xml"; 
			log.info(" generator path :"+ genCfg);
			
			File configFile = new File(MyBatisGeneratorTool_mysql.class.getResource(genCfg).getFile());
			
			ConfigurationParser configPaser = new ConfigurationParser(warnings);
			
			Configuration config = configPaser.parseConfiguration(configFile);
			
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			
			MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
			
			myBatisGenerator.generate(null);
			
			log.debug("successful!!!");
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (XMLParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvalidConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			
	}
}

c.配置sqlMapConfig.xml文件,添加实体类与别名,导入相应的mapper与对应的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>
	<!-- 添加别名 -->
	<typeAliases>
		<typeAlias type="com.controller.bean.Users" alias="Users" />
	</typeAliases>

	<!-- 导入mapper配置文件 -->
	<mappers>
		<mapper resource="com/controller/mapper/UsersMapper.xml" />
	</mappers>
	
</configuration>

d,配置beans,让dao,impl,service之间交互。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>
	<!-- 配置bean -->
<beans>
<!-- tuanshang_users配置 -->

 	<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.controller.dao.UsersMapper"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>
	<bean id="userServiceBase" class="com.controller.business.login.service.impl.IUserMapperImpl">
		<property name="usermapper" ref="userDao"></property>	
	</bean>
	<bean id="userService" parent="transactionBese">
		<property name="target" ref="userServiceBase"></property>
	</bean> 
</beans>
e,编写程序相关的dao,impl,service层并传递到controller进行操作到相应的jsp页面。

二,Spring MVC注解
1,导入注解需要使用的jar包放置到lib目录
2,配置spring.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
	<!-- 默认注解扫描包的路径 -->
	<context:component-scan base-package="com.controller" />
	<!-- 导入注解所需要的jar包 -->
	<mvc:annotation-driven />
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>


	<!-- 静态资源访问 -->
	<mvc:resources location="/images/" mapping="/images/**" />
	<mvc:resources location="/img/" mapping="/img/**" />
	<mvc:resources location="/js/" mapping="/js/**" />
	<mvc:resources location="/css/" mapping="/css/**" />
	<mvc:resources location="/airline/" mapping="/airline/**" />

	<!--定义跳转文件的前后缀  -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<!--配置表单上传的视图解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8" />
		<property name="maxUploadSize" value="10485760000" />
		<property name="maxInMemorySize" value="40960" />
	</bean>

	<!-- <bean id="initCity" class="com.controller.business.reservation.service.serviceImpl.InitBean" 
		init-method="createPool"> </bean> -->
</beans>  
3,使用注解-->常用注解
@Controller 用于action类上,声明Action组件
@Service    用于service或biz的类上声明Service组件 @Service("serviceName") 
@Repository 用于dao包下的类上声明Dao组件 @Repository("daoName")
@Component  用于不确定类上 引号中的内容表示给组件取名字,相当于bean标签中的id属性值<bean id="person"> @Component("className") 
@RequestMapping("/url")  用于用户请求映射的地址   @RequestMapping("/loginJump")
@Resource  用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName") 
@Autowired 用于注入,(srping提供的) 默认按类型装配 
@Transactional( rollbackFor={Exception.class}) 事务管理
@Scope("prototype")   设定bean的作用域
@PostConstruct  注解实始化方法
@PreDestroy 注解销毁方法
@ModelAttribute("reg_form") 用于方法内作为参数


附:
如何使用Mybatis自动生成bean,Mappper,dao等。
	先导入需要使用的jar包:mybatis-generator-core-1.3.2.jar 放到项目的lib路径下.
	配置generatorConfig(mysql).xml,放到指定新建的包中,配置详情如下:
		<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration>
	<!-- 设置mysql自动生成文件jar包路径 -->
	<classPathEntry
		location="./WebContent/WEB-INF/lib/mybatis-generator-core-1.3.2.jar" />
	<!-- 此处指定生成针对MyBatis3的DAO -->
	<context id="context" targetRuntime="MyBatis3">

		<commentGenerator>
			<property name="suppressAllComments" value="true" />
			<property name="defaultModelType" value="hierarchical"/>
		</commentGenerator>

		<!-- jdbc连接信息 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db" userId="root"
			password="123456" />

		<!-- 生成entity对象及保存路径 -->
		<javaModelGenerator targetPackage="com.controller.bean"
			targetProject="src" />

		 <!-- 生成xml文件以及配置文件及保存路径 -->
		<sqlMapGenerator targetPackage="com.controller.mapper"
			targetProject="src" />

		<!-- 生成用于查询的dao对象及保存路径 -->
		 <javaClientGenerator targetPackage="com.controller.dao"
			targetProject="src" type="XMLMAPPER" /> 


		<!-- 想要生成的数据库表,自动化工具会根据该表的结构生成相应的vo对象 -->

		<table schema="" tableName="数据库表名"
			domainObjectName="生成entity对象名" enableCountByExample="false"
			enableUpdateByExample="false" enableDeleteByExample="false"
			enableSelectByExample="false" selectByExampleQueryId="false" />
					
<!-- 		<table schema="" tableName="qbz_users"
			domainObjectName="Users" enableCountByExample="false"
			enableUpdateByExample="false" enableDeleteByExample="false"
			enableSelectByExample="false" selectByExampleQueryId="false" /> -->
	</context>

</generatorConfiguration>

下面为自动生成文件的程序代码
	
package config.mybatis;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * MyBatis工具类:自动生成代码
 * @author Studio
 *
 */
public class MyBatisGeneratorTool_mysql {
	
	private static Logger log = Logger.getLogger(MyBatisGeneratorTool_mysql.class);
	
	public static void main(String[] args){
		
		try {
			
			// 读取使用Java的特性文件编写的配置文件。
//			PropertyConfigurator.configure("//config//mybatis//log4j.properties");
			
			List<String> warnings = new ArrayList<String>();
			
			boolean overwrite = true;
			
			// generator文件读取路径
			String genCfg = "/config/mybatis/generatorConfig(mysql).xml"; 
			log.info(" generator path :"+ genCfg);
			
			File configFile = new File(MyBatisGeneratorTool_mysql.class.getResource(genCfg).getFile());
			
			ConfigurationParser configPaser = new ConfigurationParser(warnings);
			
			Configuration config = configPaser.parseConfiguration(configFile);
			
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			
			MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
			
			myBatisGenerator.generate(null);
			
			log.debug("successful!!!");
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (XMLParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvalidConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			
	}
}

解决项目中多个xml文件读取
在web.xml文件中增加配置如下:
 <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/xxx/*.xml</param-value>     
      xxx表示xml文件路径    *.xml表示后缀名为xml的任意文件
</init-param>    

猜你喜欢

转载自xp-p.iteye.com/blog/2205111