SpringMVC和Mybatis的整合
来源:互联网 发布:淘宝信誉提升 编辑:程序博客网 时间:2024/05/01 15:09
SpringMVC和Mybatis的整合
1、 在maven中需要添加的依赖:
这里需要万分小心的一个问题:
mybatis-spring和mybatis这两个依赖的版本必须要匹配,否则会有意想不到的错误。曾经折腾我一下午~
mybatis-spring官网的说明:
RequirementsBefore starting with MyBatis-Spring integration, it is very important that you are familiar with both MyBatis and Spring terminology. This document does not attempt to provide background information or basic setup and configuration tutorials for either MyBatis or Spring.MyBatis-Spring requires Java 5 or higher and the following MyBatis and Spring versions:MyBatis-Spring MyBatis Spring1.0.0 and 1.0.1 3.0.1 to 3.0.5 3.0.0 or higher1.0.2 3.0.6 3.0.0 or higher1.1.0 or higher 3.1.0 or higher 3.0.0 or higher1.3.0 or higher 3.4.0 or higher 3.0.0 or higher
2、目录结构:
3、配置文件的内容:
(1)mybatis-config.xml,即mybatis的配置文件:
<?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> <mappers> <mapper resource="mybatis-mapper.xml" /> </mappers></configuration>
只需要指定映射文件的位置即可
(2)mybatis-mapper.xml,即mybatis的映射文件:
定义了sql语句和对应的接口中方法的映射关系,可以减少工作量,也可以在接口的定义中使用注解的方式实现相同的功能。
<?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="dao.ProductDao"> <select id="getProductInfo" parameterType="int" resultMap="productMap"> SELECT c.id,c.price,c.title,c.abstract FROM content c WHERE c.id=#{id} </select> <resultMap type="dao.Product" id="productMap"> <result property="m_id" column="id" /> <result property="m_price" column="price" /> <result property="m_title" column="title" /> <result property="m_abstract" column="abstract" /> </resultMap></mapper>
注意:
mapper标签的namespace属性,需要填写接口的完整名称;
select标签的id属性,需要填写接口的对应方法名称;
resultMap是比较强大的功能之一,定义了类的属性和数据库表的列的对应关系;
(3)appcontext.xml,Spring的配置文件:
以下是最基本的配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> <!-- 定义sqlsessionFactory --> <bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="mybatis-config.xml"></property> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 定义mapper的bean --> <bean id="productDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="sqlSessionFactory" ref="sqlsessionFactory"></property> <property name="mapperInterface" value="dao.ProductDao"></property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost/webDB"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean></beans>
使用Spring为了整合Mybatis,有对应的sqlsessionFactoryBean和MapperBean。
(4)web.xml文件:
其中包含了一个dispatcherServlet的配置。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>api</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>api</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping></web-app>
根据Spring的要求,每个dispatcherServlet都在WEB-INF下有一个[servlet-name]-servlet.xml的配置文件,在该文件中指定要扫描的包(包含了对应的controller)、配置视图解析相关内容。
(5)api-servlet.xml文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 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-4.3.xsd"> <context:component-scan base-package="controller"></context:component-scan></beans>
注意:这里没配置视图解析相关的内容,仅仅指定了这个dispatcherServlet对应的controller所在的包路径。
4、Java文件的内容:
(1)Product.java,对应数据库的一张表:
package dao;public class Product { private String m_id; private String m_price; private String m_title; private String m_abstract; @Override public String toString() { return "Product [m_id=" + m_id + ", m_price=" + m_price + ", m_title=" + m_title + ", m_abstract=" + m_abstract + "]"; }}
(2)ProductDao.java,定义了一个接口,对应了对数据库表的操作:
package dao;public interface ProductDao { Product getProductInfo(int id);}
(3)Hello.java,它是名字为“api”的dispatcherServlet的一个controller:
package controller;import java.io.IOException;import javax.servlet.http.HttpServletResponse;import org.springframework.context.ApplicationContext;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import dao.Product;import dao.ProductDao;@Controllerpublic class Hello { @RequestMapping("/find") public void get(@RequestParam String id,HttpServletResponse response) throws IOException { ApplicationContext context=new ClassPathXmlApplicationContext("appcontext.xml"); ProductDao pDao=(ProductDao) context.getBean("productDao"); Product product=pDao.getProductInfo(Integer.valueOf(id)); response.getWriter().print(product); ((ConfigurableApplicationContext)context).close(); }}
实现的功能就是根据id在数据库表中查询数据,将结果显示在浏览器中。
5、运行效果:
- MyBatis和SpringMVC的整合
- springmvc和mybatis的整合
- SpringMVC和Mybatis的整合
- mybatis和springMVC的整合
- springmvc和mybatis整合
- springmvc和mybatis整合
- mybatis和springmvc整合
- springMVC和mybatis整合
- Springmvc和mybatis整合
- Springmvc和mybatis整合
- Springmvc和mybatis整合
- SpringMVC和mybatis框架的简单整合
- springmvc和mybatis整合出现的问题
- Springmvc、Spring和mybatis的整合
- 【SpringMVC整合MyBatis】springmvc和struts2的区别
- 【SSM-SpringMVC框架】SpringMVC和MyBatis的整合
- 【SpringMVC学习04】Spring、MyBatis和SpringMVC的整合
- SpringMVC框架学习(2)--SpringMVC和Mybatis的整合
- Qt 中QFileDialog的使用
- UVa 12665
- elk(1)-趁离职总结下我前公司elk方案
- leetcode解题之 Combination Sum java 版(组合求和)
- Docker下centos6 + mha全记录
- SpringMVC和Mybatis的整合
- 简单读取dataSource.properties配置文件
- 动态规划粗浅理解及LCS思路
- From Word Embeddings To Document Distances
- 一维数组的移动
- git 客户端解决冲突文件
- Failed to read candidate component class: file [F:\eclipse neon\.metadata\.plugins\org.eclipse.wst.s
- Find All Numbers Disappeared in an Array
- 六、简单查询、条件查询、排序