搭建spring + spring MVC + ibatis
前提条件:
(一) 安装数据库,此代码例子使用oracle;若是其它数据库,修改applicationContext-core.xml文件中jdbc驱动和url连接即可;
(二) 新建表AA,表结构
Sql语句:
CREATETABLE "AA"
( "NAME"VARCHAR2(200),
"SEX" NUMBER,
"AGE" VARCHAR2(50),
"ID" VARCHAR2(100),
"PASSWORD" VARCHAR2(100)
)
1. 新建项目springGyc
2. 准备好项目所需的jar包,导入到此项目中
3. 修改web.xml文件,加入ContextLoaderListener(初始化上下文)、DispatcherServlet(初始化Mvc上下文)
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- Spring配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-core.xml</param-value>
</context-param>
<!-- Spring MVC配置 -->
<!-- ====================================== -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
</init-param>
-->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4. 开发spring Mvc配置,spring-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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-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/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 自动扫描,完成bean创建和依赖注入 -->
<!-- 用了context:component-scan标签,context:annotation-config标签就可以不用了
<context:annotation-config />
-->
<context:component-scan base-package="com.gyc.dmz.rest"/>
<!-- 视图解析器 -->
<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>
</beans>
5. applicationContext-core.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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-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/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:component-scan base-package="com.gyc" />
<tx:annotation-driven transaction-manager="txManager" />
<!-- 数据源的Bean事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url">
<value>jdbc:oracle:thin:@127.0.0.1:1526:mydb</value>
</property>
<property name="username">
<value>gyc</value>
</property>
<property name="password">
<value>123456</value>
</property>
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
</bean>
<!-- ibatis的工厂数据源配置1 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlMap_config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!--根据sqlMapClien创建一个SqlMapClient模版类 -->
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
</beans>
6. sqlMap_config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true" maxRequests="3000" maxSessions="1000" maxTransactions="3000" />
<sqlMap resource="com/gyc/biz/dmz/dao/sql/AA_SqlMap.xml"/>
</sqlMapConfig>
7. 开发AA表的业务代码,dao和Services层代码
使用Generator MyBatis/iBatis Artifacts插件自动生成代码(参考之前的博客);
8. 开发controller层,AaRest.java
代码如下:
/**
*
*/
package com.gyc.dmz.rest;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.gyc.biz.dmz.dto.Aa;
import com.gyc.biz.dmz.services.AaServices;
/**
* @ClassName: AaRest
* @Description: TODO(这里用一句话描述这个类的作用)
* @author EX-GEYOUCHAO001
* @date 2015年11月24日 下午3:20:04
*
*/
@Controller
@RequestMapping("aa")
public class AaRest {
@Autowired
private AaServices aaServices;
private Aa aa = null;
@RequestMapping("queryAaById")
public String queryAaById(HttpServletRequest request, HttpServletResponse response) {
System.out.println("geyc--------queryAaById-----");
String id = request.getParameter("id");
System.out.println("geyc--------id:-----" + id);
aa = aaServices.selectByPrimaryKey(id);
if (aa != null){
request.setAttribute("aa", aa);
}
return "aa";
}
@RequestMapping("queryAaMapById")
public Map<String, Object> queryAaMapById(HttpServletRequest request,
HttpServletResponse response) {
Map<String, Object> result = new HashMap<String, Object>();
System.out.println("geyc--------queryAaById-----");
String id = request.getParameter("id");
System.out.println("geyc--------id:-----" + id);
aa = aaServices.selectByPrimaryKey(id);
result.put("aa", aa);
return result;
}
@RequestMapping("addAa")
// 测试url:http://localhost:7001/springgyc/aa/addAa.do?id=2001&name=zhaoyun&sex=1&age=20
public String addAa(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("geyc--------addAa-----");
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
Aa aa = new Aa();
aa.setId(id);
aa.setName(name);
aa.setAge(age);
aa.setSex(new BigDecimal(sex));
this.aaServices.insert(aa);
request.setAttribute("aa", aa);
return "aa";
}
@RequestMapping("updateAa")
public String updateAa(HttpServletRequest request, HttpServletResponse response) {
System.out.println("geyc--------updateAa-----");
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
Aa aa = new Aa();
aa.setId(id);
if (StringUtils.isNotEmpty(name)){
aa.setName(name);
}
if (StringUtils.isNotEmpty(age)){
aa.setAge(age);
}
if (StringUtils.isNotEmpty(sex)){
aa.setSex(new BigDecimal(sex));
}
this.aaServices.updateByPrimaryKeySelective(aa);
request.setAttribute("aa", aa);
return "aa";
}
@RequestMapping("deleteAa")
public String deleteAa(HttpServletRequest request, HttpServletResponse response) {
System.out.println("geyc--------deleteAa-----");
String id = request.getParameter("id");
Aa aa = aaServices.selectByPrimaryKey(id);
this.aaServices.deleteByPrimaryKey(id);
request.setAttribute("aa", aa);
return "aa";
}
public Aa getAa() {
return aa;
}
public void setAa(Aa aa) {
this.aa = aa;
}
}
9. 启动应用服务器,如tomcat,可以在浏览器中测试我们写的接口了。
如:添加一条数据
http://localhost:7001/springgyc/aa/addAa.do?id=2001&name=zhaoyun&sex=1&age=20