MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
一、逆向工程生成基础信息
- <?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>
- <context id="testTables" targetRuntime="MyBatis3">
- <commentGenerator>
- <!-- 是否去除自动生成的注释 true:是 : false:否 -->
- <property name="suppressAllComments" value="true" />
- </commentGenerator>
- <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
- connectionURL="jdbc:mysql://localhost:3307/mybatis" userId="root"
- password="jalja">
- </jdbcConnection>
- <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
- NUMERIC 类型解析为java.math.BigDecimal -->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- targetProject:生成PO类的位置 -->
- <javaModelGenerator targetPackage="com.jalja.springmvc_mybatis.model.pojo"
- targetProject=".src">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- <!-- 从数据库返回的值被清理前后的空格 -->
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- targetProject:mapper映射文件生成的位置 -->
- <sqlMapGenerator targetPackage="com.jalja.springmvc_mybatis.mapper"
- targetProject=".src">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- </sqlMapGenerator>
- <!-- targetPackage:mapper接口生成的位置 -->
- <javaClientGenerator type="XMLMAPPER"
- targetPackage="com.jalja.springmvc_mybatis.mapper"
- targetProject=".src">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- </javaClientGenerator>
- <!-- 指定数据库表 -->
- <table tableName="items"></table>
- <table tableName="orders"></table>
- <table tableName="orderdetail"></table>
- <table tableName="user"></table>
- </context>
- </generatorConfiguration>
- public static void main(String[] arhs) throws Exception{
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- File configFile = new File("src.main.resources/generator.xml");
- ConfigurationParser cp = new ConfigurationParser(warnings);
- Configuration config = cp.parseConfiguration(configFile);
- DefaultShellCallback callback = new DefaultShellCallback(overwrite);
- MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
- myBatisGenerator.generate(null);
- }
复制代码
二、springMVC与Mybatis整合 各个配置文件
1.项目结构
2、各个文件的核心代码
a.web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <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_3_0.xsd" version="3.0">
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value> classpath:spring/applicationContext-*.xml </param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>classpath:log4j.properties</param-value>
- </context-param>
- <context-param>
- <param-name>log4jRefreshInterval</param-name>
- <param-value>3000</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
- <!-- post请求乱码 -->
- <filter>
- <filter-name>SpringEncodingFilter</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>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>SpringEncodingFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- </filter-mapping>
- <!-- springMvc前端控制器 -->
- <servlet>
- <servlet-name>springMvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <!--
- contextConfigLocation加载 springMvc的配置文件(处理器适配器 ,映射器)
- 如果不配置默认加载的是 /WEB-INF/servlet名称-servlet.xml(springMvc-servlet.xml)
- -->
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springmvc.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMvc</servlet-name>
- <!--
- 1、*.do :DispatcherServlet 解析所有 *.do 结尾的访问
- 2、 / :DispatcherServlet解析所有请求(包括静态资源) 这种配置可以实现restful风格的url
- 3、/*: 这种配置最终要转发到一个jsp页面
- -->
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <!-- springMvc前端控制器 RestFul
- <servlet>
- <servlet-name>springMvc_rest</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/applicationContext-springmvc.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMvc_rest</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- -->
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
- </web-app>
复制代码
b、config/mybatis/applicationContext-mybatis.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>
- <!--
- 各个属性
- properties:
- setting(全局配置参数配置):mybatis运行时可以调整一些运行参数 例如:开启二级缓存、开启延迟加载
- typeAliases(类型别名): 在mapper.xml中定义parameterType 参数类型 resultType 返回类型时
- 需要指定类型的路径 不方便开发,我们开一针对 这些类型给其指定别名
- typeHandler(类型处理器):在mybatis 中是通过typeHandler 完成 jdbc类型与java类型的转化 ,mybatis 提供的处理器已可满足 开发需求
- objectFactory(对象工厂):
- plugins(插件):
- environments(环境集合属性对象):
- environment(环境子属性对象):
- transactionManager(事务管理):
- dataSource(数据源):
- mappers(映射器):
- -->
- <!-- 对事务的管理和连接池的配置 -->
- <!-- 延迟加载 -->
- <settings>
- <!-- 打开延迟加载 -->
- <setting name="lazyLoadingEnabled" value="true"/>
- <!-- 积极加载改为消极加载 -->
- <setting name="aggressiveLazyLoading" value="false"/>
- <!-- 开启二级缓存 -->
- <setting name="cacheEnabled" value="true"/>
- </settings>
- <typeAliases>
- <!-- 针对单个别名定义 -->
- <!-- <typeAlias type="com.jalja.myBatis.model.User" alias="user"/> -->
- <!--批量别名的定义 mybatis 自动扫描包中的类 别名就是类名(首字母大小写都可以) -->
- <package name="com.jalja.springmvc_mybatis.model.pojo"/>
- <package name="com.jalja.springmvc_mybatis.model.custom"/>
- <package name="com.jalja.springmvc_mybatis.model.vo"/>
- </typeAliases>
- <!--加载映射文件 -->
- <!-- <mappers> <mapper resource="com/jalja/spring_mybatis/mapper/UserMapper.xml"/> -->
- <!-- 和spring整合后 可以去掉
- <package name="com.jalja.spring_mybatis.mapper"/> </mappers>-->
- </configuration>
复制代码
c、config/spring/applicationContext-dao.xml
d、config/spring/applicationContext-service.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:cache="http://www.springframework.org/schema/cache"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
- http://www.springframework.org/schema/cache
- http://www.springframework.org/schema/cache/spring-cache-3.2.xsd">
- <bean id="itemsService" class="com.jalja.springmvc_mybatis.service.impl.ItemsServiceImpl"></bean>
- </beans>
复制代码
e、config/spring/springmvc.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:cache="http://www.springframework.org/schema/cache"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- 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-3.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/cache
- http://www.springframework.org/schema/cache/spring-cache-3.2.xsd">
- <!--注解 处理器 映射器 -->
- <!-- 映射器 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping springmvc3.1以前-->
- <!-- 映射器 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping springmvc3.1以后 -->
- <!-- 适配器 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter springmvc3.1以前-->
- <!-- 适配器 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter springmvc3.1以后 -->
- <!--配置映射器和 适配器
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
- <!-- 开启注解 映射器和 适配器 这种方式默认加载了很多参数绑定的方法 例如 json转换解析器-->
- <mvc:annotation-driven/>
- <!-- 配置 Handler
- <bean class="com.jalja.springmvc_mybatis.controller.UserController"/>-->
- <!-- 注解 配置 基于组建扫描的方式 -->
- <context:component-scan base-package="com.jalja.springmvc_mybatis.controller" />
- <!-- 配置自定义参数解析器 -->
- <mvc:annotation-driven conversion-service="conversionService"/>
- <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <property name="converters">
- <list>
- <!-- 日期类型转换 -->
- <bean class="com.jalja.springmvc_mybatis.converter.CustomDateConverter"></bean>
- </list>
- </property>
- </bean>
- <!-- 全局异常处理器 -->
- <bean class="com.jalja.springmvc_mybatis.exception.CustomExceptionResolver"/>
- <!-- 文件上传 -->
- <!-- 支持上传文件 -->
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- 文件大小 5M -->
- <property name="maxUploadSize" value="5242880"/>
- </bean>
- <!-- 使用 restFul 风格 编程 照成 的 静态资源 访问 问题 -->
- <!-- <mvc:resources mapping="/js/**" location="/resources/js/"/> -->
- <!-- springMVC拦截器的配置 -->
- <mvc:interceptors>
- <mvc:interceptor>
- <mvc:mapping path="/**" />
- <bean class="com.jalja.springmvc_mybatis.interceptor.LoginInterceptor" />
- </mvc:interceptor>
- </mvc:interceptors>
- <!-- 视图映射 jsp解析 默认使用jstl-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 默认使用 -->
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
- </beans>
复制代码
f、config/jdbc.properties
- jdbc_driverClassName=com.mysql.jdbc.Driver
- jdbc_url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
- jdbc_username=root
- jdbc_password=111111
复制代码
g、config/log4j.properties
- #在开发环境下的日志级别 要设置成debug,生成环境设置成info 或error
- log4j.rootLogger=debug, stdout
- log4j.logger.org.apache.ibatis=debug
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
复制代码
h、com/jalja/springmvc_mybatis/controller/ItemsController.java
- package com.jalja.springmvc_mybatis.controller;
- import java.io.File;
- import java.util.List;
- import java.util.UUID;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
- import com.jalja.springmvc_mybatis.exception.CustomException;
- import com.jalja.springmvc_mybatis.model.custom.ItemsCustom;
- import com.jalja.springmvc_mybatis.service.ItemsService;
- /**
- * 商品
- * @author PC003
- *conterver参数转换器 springMvc提供了很多参数转换器
- */
- @Controller
- @RequestMapping("/items") //窄化请求映射
- public class ItemsController {
- @Autowired ItemsService itemsService;
- @RequestMapping(value="/findItemsList")
- public String findItemsList(Model model) throws Exception{
- List<ItemsCustom> itemsList=itemsService.findItemsList(null);
- System.out.println(itemsList);
- model.addAttribute("itemsList", itemsList);
- return "itemsList";
- }
- @RequestMapping(value="/editItems", method={RequestMethod.POST,RequestMethod.GET}) //限制Http请求方式
- //@RequestParam 将请求参数 与 形式参数进行绑定 required:指定属性必须传入值 defaultValue:设置默认值
- public String editItems(Model model, @RequestParam(value="id",required=true,defaultValue="0") Integer itemsId) throws Exception{
- ItemsCustom itemsCustom=itemsService.findItemsById(itemsId);
- if(itemsCustom==null){
- throw new CustomException("商品不存在");
- }
- model.addAttribute("itemsCustom", itemsCustom);
- return "editItems";
- }
- @RequestMapping(value="/updateItems")
- public String editItemsSubmit(Integer id,ItemsCustom itemsCustom,MultipartFile itemsPic) throws Exception{
- String uploadFileName=itemsPic.getOriginalFilename();//获取上传的文件名
- if(itemsPic!=null && uploadFileName!=null && !uploadFileName.equals("")){
- String imagesPath="E:\develop\upload\images\";
- String newFileName=UUID.randomUUID()+uploadFileName.substring(uploadFileName.lastIndexOf("."),uploadFileName.length());
- File newFile=new File(imagesPath+newFileName);
- itemsPic.transferTo(newFile);//将内存中的数据写入磁盘
- itemsCustom.setPic(newFileName);
- }
- itemsService.updateItemsById(id, itemsCustom);
- return "redirect:findItemsList.do"; //重定向
- }
- //JSON的使用 @ResponseBody:将对像转json输出 @RequestBody:将请求参数转 java对象
- @RequestMapping(value="/jsonRequest")
- public @ResponseBody ItemsCustom jsonRequest(@RequestBody ItemsCustom itemsCustom) throws Exception{
- return itemsCustom;
- }
- //RestFul 风格 编程 /restFulRequest/{id}:表示将这个位置的参数传到 @PathVariable 指定的名称中
- @RequestMapping(value="/restFulRequest/{id}")
- public @ResponseBody ItemsCustom restFulRequest(@PathVariable("id") Integer id) throws Exception{
- ItemsCustom itemsCustom=itemsService.findItemsById(id);
- return itemsCustom;
- }
- }
复制代码
以上所述是小编给大家介绍的SpringMVC整合mybatis实例代码,希望对大家有所帮助,如果大家想了解更多资讯敬请关注程序员之家网站! |