一,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>