Spring 3.05+MyBatis 3.0.4整合非完全例
33541 ワード
注釈に基づく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.05+Spring 3.0.5+MyBatis 3.0.4全注釈例
http://www.2cto.com/kf/201108/98937.html
namespaceインターフェースとパブリックdaoの違いに基づいて、MyBatis 3.0から、mapperのnamespace属性に対して、耐久性オペレーティングクラスとして特定のインターフェースを指定できます。インタフェースでは、マッピングファイルのid属性値と同じ方法を定義します。MyBatisは自動的に結合し、対応するSQL文を実行します。このようなインターフェースの実現方式は、各Mapperのためにインターフェースを作る必要があります。もしシステムが大きくなれば、これらの種類を維持するのが面倒になります。
if exists(select 1)
from syssobject
where id=object_id('Users')
and type='U')
drop table Users
go
=====================================================================================================================
//*Table:Users */
=====================================================================================================================
create table Users(
id。 要点 not null
name varrhar(50) null
password varrhar(50) null
email varrhar(50) null
remarks varrhar(500) null
コンストラクションPK_USERS prmary key nonclusted(id)
)
go
SpringMVC
----------------------------------------
jars of SpringMVC
comple.springsource.com.mchange.v 2.c 3 p 0-0.9.12.jar
comple.sprigsource.net.sf.cglib-2.2.jar
comple.sprigsource.org.aopalliance-1.00.jar
comple.springsource.org.apache.com mmons.fileuplad-1.0.jar
compring.spring source.org.apache.com mmons.httpclient-3.jar
comple.spring source.org.apache.com mmons.lang-24.0.jar
comple.spring source.org.apache.com mmons.loging-1.1.jar
comple.spring source.org.apache.com mmons.pool-1.5.jar
comple.sprigsource.org.apache.log 4 j-1.15.jar
comple.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
comple.spring source.org.co dehaus.jackson.mapper-1.00.jar
commons-dbcp.jar
jortm.jar
org.springframe ework.aop-3.5.RELEASE.jar
org.springframe ework.asm-3.5.RELEASE.jar
org.springframe ework.aspects-3.05.RELEASE.jar
org.springframe ework.beans-3.5.RELEASE.jar
org.springframe ework.com ntect-3.05.RELEASE.jar
org.springframe exe.com re-3.5.RELEASE.jar
org.spring frame expression n-3.05.RELEASE.jar
org.springframe ework.instrument-3.5.RELEASE.jar
org.springframe ework.instrument.tomcat-3.05.RELEASE.jar
org.springframe ework.jdbc-3.5.RELEASE.jar
org.springframe ebook.orm-3.5.RELEASE.jar
org.springframe ework.oxm-3.5.RELEASE.jar
org.springframe ework.trantionn 3.05.RELEASE.jar
org.springframe ework.web-3.5.RELEASE.jar
org.springframe ework.web.portlet-3.05.RELEASE.jar
org.springframe ework.web.servlet-3.05.RELEASE.jar
org.springframe ework.web.struts-3.5.RELEASE.jar
persistence.jar
xappool.jar
-----------------------------------------------
web.xml設定appication Contact.xml、Spring MVCIbatis-servlet.xmlデフォルト位置
=========================================================================================
========================================================================================
========================================================================================
=============================================================================================
==============================================================================================
========================================================================================
jars of Project
===========================================================================================
cglib-23.22.jar
comple.springsource.com.mchange.v 2.c 3 p 0-0.9.12.jar
comple.sprigsource.net.sf.cglib-2.2.jar
comple.sprigsource.org.aopalliance-1.00.jar
comple.springsource.org.apache.com mmons.fileuplad-1.0.jar
compring.spring source.org.apache.com mmons.httpclient-3.jar
comple.spring source.org.apache.com mmons.lang-24.0.jar
comple.spring source.org.apache.com mmons.loging-1.1.jar
comple.spring source.org.apache.com mmons.pool-1.5.jar
comple.sprigsource.org.apache.log 4 j-1.15.jar
comple.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
comple.spring source.org.co dehaus.jackson.mapper-1.00.jar
commons-dbcp.jar
commons-loging-11.jar
jortm.jar
junnit-4.8.1.jar
log 4 j-1.2.15.jar
mybatis-3.4.jar mybatis-spring-1.00.jar
gnl-2.6.9.jar
org.springframe ework.aop-3.5.RELEASE.jar
org.springframe ework.asm-3.5.RELEASE.jar
org.springframe ework.aspects-3.05.RELEASE.jar
org.springframe ework.beans-3.5.RELEASE.jar
org.springframe ework.com ntect-3.05.RELEASE.jar
org.springframe exe.com re-3.5.RELEASE.jar
org.spring frame expression n-3.05.RELEASE.jar
org.springframe ework.instrument-3.5.RELEASE.jar
org.springframe ework.instrument.tomcat-3.05.RELEASE.jar
org.springframe ework.jdbc-3.5.RELEASE.jar
org.springframe ebook.orm-3.5.RELEASE.jar
org.springframe ework.oxm-3.5.RELEASE.jar
org.springframe ework.trantionn 3.05.RELEASE.jar
org.springframe ework.web-3.5.RELEASE.jar
org.springframe ework.web.portlet-3.05.RELEASE.jar
org.springframe ework.web.servlet-3.05.RELEASE.jar
org.springframe ework.web.struts-3.5.RELEASE.jar
persistence.jar
spring-test-3.05.RELEASE.jar
sqljdbc 4.jar
xappool.jar
src/config/database.properties
=========================================================================================
=====================================================================================
1.DAO方式では、daoから直接にxmlのsql idを呼び出します。
IUsersDao.java
===========================================================================================
====================================================================================
IUsersMapper.java
========================================================================================
=====================================================================================
public class UsersMapper implements
IUsers Mapper{
prvate
IUsers Mapper users Mapper;
)
インターフェースを実現しながら、自分で使う方法です。また、この方法の名前は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の違いに基づいて、MyBatis 3.0から、mapperのnamespace属性に対して、耐久性オペレーティングクラスとして特定のインターフェースを指定できます。インタフェースでは、マッピングファイルのid属性値と同じ方法を定義します。MyBatisは自動的に結合し、対応するSQL文を実行します。このようなインターフェースの実現方式は、各Mapperのためにインターフェースを作る必要があります。もしシステムが大きくなれば、これらの種類を維持するのが面倒になります。
二つの方法を同時に使用する例:
IUsers Service.java
==========================================================================================================
==========================================================================================================
==============================================================================================
=====================================================================================================
===========================================================================================
================================================================================
=================================================================================================
====================================================================================
====================================================================================================
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.05+Spring 3.0.5+MyBatis 3.0.4全注釈例
http://www.2cto.com/kf/201108/98937.html
namespaceインターフェースとパブリックdaoの違いに基づいて、MyBatis 3.0から、mapperのnamespace属性に対して、耐久性オペレーティングクラスとして特定のインターフェースを指定できます。インタフェースでは、マッピングファイルのid属性値と同じ方法を定義します。MyBatisは自動的に結合し、対応するSQL文を実行します。このようなインターフェースの実現方式は、各Mapperのためにインターフェースを作る必要があります。もしシステムが大きくなれば、これらの種類を維持するのが面倒になります。
if exists(select 1)
from syssobject
where id=object_id('Users')
and type='U')
drop table Users
go
=====================================================================================================================
//*Table:Users */
=====================================================================================================================
create table Users(
id。 要点 not null
name varrhar(50) null
password varrhar(50) null
email varrhar(50) null
remarks varrhar(500) null
コンストラクションPK_USERS prmary key nonclusted(id)
)
go
SpringMVC
----------------------------------------
jars of SpringMVC
comple.springsource.com.mchange.v 2.c 3 p 0-0.9.12.jar
comple.sprigsource.net.sf.cglib-2.2.jar
comple.sprigsource.org.aopalliance-1.00.jar
comple.springsource.org.apache.com mmons.fileuplad-1.0.jar
compring.spring source.org.apache.com mmons.httpclient-3.jar
comple.spring source.org.apache.com mmons.lang-24.0.jar
comple.spring source.org.apache.com mmons.loging-1.1.jar
comple.spring source.org.apache.com mmons.pool-1.5.jar
comple.sprigsource.org.apache.log 4 j-1.15.jar
comple.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
comple.spring source.org.co dehaus.jackson.mapper-1.00.jar
commons-dbcp.jar
jortm.jar
org.springframe ework.aop-3.5.RELEASE.jar
org.springframe ework.asm-3.5.RELEASE.jar
org.springframe ework.aspects-3.05.RELEASE.jar
org.springframe ework.beans-3.5.RELEASE.jar
org.springframe ework.com ntect-3.05.RELEASE.jar
org.springframe exe.com re-3.5.RELEASE.jar
org.spring frame expression n-3.05.RELEASE.jar
org.springframe ework.instrument-3.5.RELEASE.jar
org.springframe ework.instrument.tomcat-3.05.RELEASE.jar
org.springframe ework.jdbc-3.5.RELEASE.jar
org.springframe ebook.orm-3.5.RELEASE.jar
org.springframe ework.oxm-3.5.RELEASE.jar
org.springframe ework.trantionn 3.05.RELEASE.jar
org.springframe ework.web-3.5.RELEASE.jar
org.springframe ework.web.portlet-3.05.RELEASE.jar
org.springframe ework.web.servlet-3.05.RELEASE.jar
org.springframe ework.web.struts-3.5.RELEASE.jar
persistence.jar
xappool.jar
-----------------------------------------------
web.xml設定appication Contact.xml、Spring MVCIbatis-servlet.xmlデフォルト位置
=========================================================================================
<?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/javaee
http://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>
Spring MVCIbatis-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"
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>
appication Contect.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:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop-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/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
default-autowire="byName" default-lazy-init="true">
<!-- Controller -->
<context:component-scan base-package="com">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
ハローController.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==============================================================================================
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<a href="sayHello.do">sayHello</a>
</body>
</html>
WebRoot/pages/sayHello.jsp========================================================================================
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>helloworld</title>
</head>
<body>
<h1>${helloworld}</h1>
</body>
</html>
MyBatis 3.0機能を追加jars of Project
===========================================================================================
cglib-23.22.jar
comple.springsource.com.mchange.v 2.c 3 p 0-0.9.12.jar
comple.sprigsource.net.sf.cglib-2.2.jar
comple.sprigsource.org.aopalliance-1.00.jar
comple.springsource.org.apache.com mmons.fileuplad-1.0.jar
compring.spring source.org.apache.com mmons.httpclient-3.jar
comple.spring source.org.apache.com mmons.lang-24.0.jar
comple.spring source.org.apache.com mmons.loging-1.1.jar
comple.spring source.org.apache.com mmons.pool-1.5.jar
comple.sprigsource.org.apache.log 4 j-1.15.jar
comple.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
comple.spring source.org.co dehaus.jackson.mapper-1.00.jar
commons-dbcp.jar
commons-loging-11.jar
jortm.jar
junnit-4.8.1.jar
log 4 j-1.2.15.jar
mybatis-3.4.jar mybatis-spring-1.00.jar
gnl-2.6.9.jar
org.springframe ework.aop-3.5.RELEASE.jar
org.springframe ework.asm-3.5.RELEASE.jar
org.springframe ework.aspects-3.05.RELEASE.jar
org.springframe ework.beans-3.5.RELEASE.jar
org.springframe ework.com ntect-3.05.RELEASE.jar
org.springframe exe.com re-3.5.RELEASE.jar
org.spring frame expression n-3.05.RELEASE.jar
org.springframe ework.instrument-3.5.RELEASE.jar
org.springframe ework.instrument.tomcat-3.05.RELEASE.jar
org.springframe ework.jdbc-3.5.RELEASE.jar
org.springframe ebook.orm-3.5.RELEASE.jar
org.springframe ework.oxm-3.5.RELEASE.jar
org.springframe ework.trantionn 3.05.RELEASE.jar
org.springframe ework.web-3.5.RELEASE.jar
org.springframe ework.web.portlet-3.05.RELEASE.jar
org.springframe ework.web.servlet-3.05.RELEASE.jar
org.springframe ework.web.struts-3.5.RELEASE.jar
persistence.jar
spring-test-3.05.RELEASE.jar
sqljdbc 4.jar
xappool.jar
src/config/database.properties
=========================================================================================
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433; DatabaseName=SmartClientDemos
username=sa
password=sa
Uses.java=====================================================================================
package com.pojo;
public class Users {
private long id;
private String name;
private String password;
private String email;
private String remarks;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
}
二つの方法:1.DAO方式では、daoから直接にxmlのsql idを呼び出します。
IUsersDao.java
===========================================================================================
package com.dao;
import java.util.List;
public interface IUsersDao {
public abstract List queryUsersByName(String name);
}
UsersDao.java====================================================================================
package com.dao.impl;
import java.util.List;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;
import com.dao.IUsersDao;
import com.pojo.Users;
@Repository
public class UsersDao extends SqlSessionDaoSupport implements IUsersDao{
@Override
public List queryUsersByName(String name){
System.out.println("Users.queryUsersByName()");
// com.mapper.IUsersMapper.queryUsersByName = (namespace+select/insert/update/delete)id
return getSqlSession().selectList("com.mapper.IUsersMapper.queryUsersByName", name);
}
}
2.Mapper方式:A、実現類はインターフェースを実現する時、直接パッケージと使用インターフェース;b、インターフェースの方法はxmlの中のsql idと同じでなければなりません。IUsersMapper.java
========================================================================================
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=====================================================================================
package com.mapper.impl;
import com.mapper.IUsersMapper;
import com.pojo.Users;
public class UsersMapper implements IUsersMapper {
private IUsersMapper usersMapper;
@Override
public Users queryUsersById(int id) {
return usersMapper.queryUsersById(id);
}
@Override
public void insertUser(Users user) {
System.out.println("UsersMapper insertUser");
usersMapper.insertUser(user);
}
@Override
public void updateUser(Users user) {
System.out.println("UsersMapper updateUser");
usersMapper.updateUser(user);
}
public IUsersMapper getUsersMapper() {
return usersMapper;
}
public void setUsersMapper(IUsersMapper usersMapper) {
this.usersMapper = usersMapper;
}
}
注意:public class UsersMapper implements
IUsers Mapper{
prvate
IUsers Mapper users Mapper;
)
インターフェースを実現しながら、自分で使う方法です。また、この方法の名前は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の違いに基づいて、MyBatis 3.0から、mapperのnamespace属性に対して、耐久性オペレーティングクラスとして特定のインターフェースを指定できます。インタフェースでは、マッピングファイルのid属性値と同じ方法を定義します。MyBatisは自動的に結合し、対応するSQL文を実行します。このようなインターフェースの実現方式は、各Mapperのためにインターフェースを作る必要があります。もしシステムが大きくなれば、これらの種類を維持するのが面倒になります。
二つの方法を同時に使用する例:
IUsers Service.java
==========================================================================================================
package com.service;
import com.pojo.Users;
public interface IUsersService {
public abstract Users queryUsersById(int id);
public abstract Users queryUsersByName(String name);
public abstract void saveUser(Users user);
}
UsersServiceImpl.java==========================================================================================================
package com.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.dao.IUsersDao;
import com.mapper.IUsersMapper;
import com.pojo.Users;
import com.service.IUsersService;
@Service(value="usersService")
@Transactional(rollbackFor=Exception.class)
public class UsersServiceImpl implements IUsersService {
@Resource(name="usersMapper")
private IUsersMapper usersMapper;
@Resource(name="usersDao")
private IUsersDao usersDao;
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=true)
public Users queryUsersById(int id){
return usersMapper.queryUsersById(id);
}
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=true)
public Users queryUsersByName(String name){
List list = usersDao.queryUsersByName(name);
System.out.println("list = "+list==null?"0":list.size());
if(list!=null&&list.size()>0) return (Users)list.get(0);
return null;
}
@Override
@Transactional(propagation=Propagation.REQUIRED)
public void saveUser(Users user){
if(user.getId()<=0){
System.out.println("insertUser");
usersMapper.insertUser(user);
}else{
System.out.println("updateUser");
usersMapper.updateUser(user);
}
//throw new RuntimeException("@@ Rollback for Debug..........");
}
}
ハローController.java==============================================================================================
package com.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.pojo.Users;
import com.service.IUsersService;
@Controller
public class HelloController {
@Resource(name="usersService")
private IUsersService usersService;
@RequestMapping(value="sayHello")
public ModelAndView sayHello(){
ModelAndView view = new ModelAndView("sayHello");
view.addObject("helloworld", "Hello World From Server.");
//insert
Users user = new Users();
user.setName("Pandy");
user.setPassword("pandy");
user.setEmail("[email protected]");
user.setRemarks("nothing");
usersService.saveUser(user);
Users user1 = usersService.queryUsersByName(user.getName());
//Users user1 = usersService.queryUsersById(0);
if(user1!=null){
System.out.println(user1.getName());
view.addObject("userName", user1.getName());
}else{
System.out.println("Noting");
view.addObject("userName", "Noting");
}
return view;
}
}
com/mapper/xml/Users.xml=====================================================================================================
<?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="com.mapper.IUsersMapper">
<select id="queryUsersById" parameterType="int" resultType="Users">
select id, name,password,email, remarks from Users where id = #{id}
</select>
<select id="queryUsersByName" parameterType="string" resultType="Users">
select id, name,password,email, remarks from Users where name = #{name}
</select>
<insert id="insertUser" parameterType="Users">
insert into Users(id, name,password,email, remarks) values(#{id}, #{name},#{password},#{email}, #{remarks})
</insert>
<update id="updateUser">
update Users set name=#{name},password=#{password},email=#{email},remarks=#{remarks} where id=#{id}
</update>
</mapper>
mybatis-config.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 alias="Users" type="com.pojo.Users"/>
</typeAliases>
<!-- mapper.xml -->
<mappers>
<mapper resource="com/mapper/xml/Users.xml"/>
</mappers>
</configuration>
appication Contect.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:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop-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/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
default-autowire="byName" default-lazy-init="true">
<context:component-scan base-package="com">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> -->
</context:component-scan>
<!-- -->
<context:property-placeholder location="classpath:config/database.properties"/>
<!-- DataSource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<!-- -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- Mapper -->
<bean id="usersMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.mapper.IUsersMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>
Spring MVCIbatis-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"
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 />
<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>
log 4 j.properties====================================================================================
#logger level default is INFO
log4j.rootLogger=info,console,file
#append to console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p - %m%n
#append to file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/demo.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=10000
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %p - %m%n
#ibatis logger config
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
WebRoot/pages/sayHello.jsp====================================================================================================
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>helloworld</title>
</head>
<body>
<h1>${helloworld}</h1>
<br>
<h3>${userName}</h3>
</body>
</html>