Spring 3.0.5+MyBatis3.0.4整合非完全例子
基于注解的mybatis和spring整合:http://huangmin001.iteye.com/blog/1185806
这个文章说的很详细,很值得一看.
Maven + SpringMVC + Mybatis【绝非原创,单纯整理】【四】: http://playgod1984.iteye.com/blog/984113 最后面提示说id和映射关系.
考虑到MyBatis注解方式比较麻烦,可能都还没有xml来的方便,易读.所以就没有加上去.如有兴趣,自行参考http://panyongzheng.iteye.com/blog/1604067
spring+springmvc+ibatis整合注解方式实例(附带数据库)http://blog.csdn.net/mgb18986349193/article/details/8494494
这个例子也很详细,但是并没有对Mapper接口和xml里面的sql id做映射.不过这是否是必须的?可以适当考虑.
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解三
http://www.2cto.com/kf/201108/98937.html
基于namespace接口与公用dao的区别,从MyBatis3.0开始,对mapper中的namespace属性新增了一个特性:可以指定具体的接口来作为持久化操作类,在接口中定义与映射文件中id属性值相同的方法,MyBatis会自动去绑定和执行对应的SQL语句。这种接口实现方式,需要为每个Mapper创建一个接口,如果系统做大了,维护这些类会比较麻烦,大象个人倾向于基础服务式的Dao实现类.
if exists (select 1
from sysobjects
where id = object_id(‘Users’)
and type = ‘U’)
drop table Users
go
/*==============================================================*/
/* Table: Users */
/*==============================================================*/
create table Users (
id int not null,
name varchar(50) null,
password varchar(50) null,
email varchar(50) null,
remarks varchar(500) null,
constraint PK_USERS primary key nonclustered (id)
)
go
SpringMVC
———————————————————————-
jars of SpringMVC
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.fileupload-1.2.0.jar
com.springsource.org.apache.commons.httpclient-3.1.0.jar
com.springsource.org.apache.commons.lang-2.4.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.pool-1.5.3.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
com.springsource.org.codehaus.jackson.mapper-1.0.0.jar
commons-dbcp.jar
jotm.jar
org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.aspects-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.instrument-3.0.5.RELEASE.jar
org.springframework.instrument.tomcat-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.oxm-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
org.springframework.web.portlet-3.0.5.RELEASE.jar
org.springframework.web.servlet-3.0.5.RELEASE.jar
org.springframework.web.struts-3.0.5.RELEASE.jar
persistence.jar
xapool.jar
———————————————————————————–
web.xml 设定applicationContext.xml,SpringMVCIbatis-servlet.xml默认位置
======================================
-
1234567891011121314151617181920212223242526272829303132333435363738Xml代码<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" 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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name><context-param><param-name>contextConfigLocation</param-name><!-- 设定applicationContext.xml的默认路径 --><param-value>/WEB-INF/classes/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>SpringMVCIbatisSmartClient</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup><init-param><param-name>contextConfigLocation</param-name><!-- 设定servlet.xml的默认路径 --><param-value>/WEB-INF/classes/SpringMVCIbatis-servlet.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>SpringMVCIbatisSmartClient</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
SpringMVCIbatis-servlet.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
===================================== 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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <mvc:annotation-driven /> <!-- 排除Service注解扫描 --> <context:component-scan base-package="com"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans> |
applicationContext.xml
=====================================
HelloController.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
========================================== Java代码 package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { @RequestMapping(value="sayHello") public ModelAndView sayHello(){ ModelAndView view = new ModelAndView("sayHello"); view.addObject("helloworld", "Hello World From Server."); return view; } } |
index.jsp
===========================================
WebRoot/pages/sayHello.jsp
=====================================
增加MyBatis3.0功能
jars of Project
========================================
cglib-2.2.2.jar
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.fileupload-1.2.0.jar
com.springsource.org.apache.commons.httpclient-3.1.0.jar
com.springsource.org.apache.commons.lang-2.4.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.pool-1.5.3.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
com.springsource.org.codehaus.jackson.mapper-1.0.0.jar
commons-dbcp.jar
commons-logging-1.1.1.jar
jotm.jar
junit-4.8.1.jar
log4j-1.2.15.jar
mybatis-3.0.4.jar
mybatis-spring-1.0.0.jar
ognl-2.6.9.jar
org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.aspects-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.instrument-3.0.5.RELEASE.jar
org.springframework.instrument.tomcat-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.oxm-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
org.springframework.web.portlet-3.0.5.RELEASE.jar
org.springframework.web.servlet-3.0.5.RELEASE.jar
org.springframework.web.struts-3.0.5.RELEASE.jar
persistence.jar
spring-test-3.0.5.RELEASE.jar
sqljdbc4.jar
xapool.jar
src/config/database.properties
======================================
Users.java
==================================
两种方式:
1.DAO方式,直接在dao里面调用xml的sql id.
IUsersDao.java
========================================
UsersDao.java
=================================
2.Mapper方式:A,实现类在实现接口的时候,直接封装和使用接口; b,接口的方法跟xml里面的sql id一定要一样.
IUsersMapper.java
=====================================
-
123456789Java代码package com.mapper;import com.pojo.Users;public interface IUsersMapper {public abstract Users queryUsersById(int id);public abstract void insertUser(Users user);public abstract void updateUser(Users user);}
UsersMapper.java
==================================
注意:
|
1 2 3 |
public class UsersMapper implements IUsersMapper { private IUsersMapper usersMapper; } |
实现接口的同时,又使用它自己,并且这个方法名字又对应xml里面的ID.
service->mapper->DAO
http://www.idashu.me/Mybatis-development.html 这里的说法又是不一样,不知道能否运行不(还没尝试)?
service->mapper, 它少了DAO,其实mapper就是DAO.
注意文件的存放位置.
http://www.2cto.com/kf/201108/98937.html
基于namespace接口与公用dao的区别,从MyBatis3.0开始,对mapper中的namespace属性新增了一个特性:可以指定具体的接口来作为持久化操作类,在接口中定义与映射文件中id属性值相同的方法,MyBatis会自动去绑定和执行对应的SQL语句。这种接口实现方式,需要为每个Mapper创建一个接口,如果系统做大了,维护这些类会比较麻烦,大象个人倾向于基础服务式的Dao实现类.
同时使用两种方式的例子:
IUsersService.java
=======================================================
UsersServiceImpl.java
=======================================================
HelloController.java
===========================================
com/mapper/xml/Users.xml
==================================================
mybatis-config.xml
========================================
applicationContext.xml
=============================
SpringMVCIbatis-servlet.xml
==============================================
log4j.properties
=================================
WebRoot/pages/sayHello.jsp
=================================================
