spring+mybatis+restful的搭建

近期需要写一个android项目,服务端由我负责,打算使用spring+mybatis+restful搭建。搭建过程如下,具体细节日后有时间再整理。

1、新建一个Dynamic web项目,Eclipse版本如下:Eclipse Java EE IDE for Web Developers.Version: Luna Release (4.4.0)

2、引入spring mybatis jersy等jar包,还有其他项目需要的jar包也要引入(比如数据库连接jar包,myspring-batis整合jar包等)。引入之后需要 经过buid path操作,否则会出错。具体过程如下,选择其中的一个library库,右键点击选择build path->config buildpath->Deployment assembly->add->java build path entries->选择类库加入即可。


3、整合spring+mybatis:通过xml配置文件将spring和mybatis整合。


ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	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-4.0.xsd 
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
	http://www.springframework.org/schema/aop  
	http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
	<!-- 连接数据库 -->
	<bean id="jdbcDatasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/springTest?useUnicode=true&characterEncoding=UTF-8"/>
		<property name="username" value="root"/>
		<property name="password" value="m,./1234"/>
	</bean>
	<!-- 引用数据资源 和 mybatis配置 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="jdbcDatasource" />
		<property name="configLocation" value="classpath:config/Mybatis-Configuration.xml" />
	</bean>
	<!-- 配置mapper,接口,增删改查语句,DataModelMapper里面是增删改查的语句 -->
	<bean id="DataModelMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
    	<property name="mapperInterface"  
        	value="com.info.basic.DataModelMapper" />  
    	<property name="sqlSessionFactory" ref="sqlSessionFactory" />  
	</bean> 

</beans>
Mybatis-Configuration.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>
	<!-- <settings>
		<setting name="callSettersOnNulls" value="true"></setting>
	</settings> -->
	<mappers>
		<mapper resource="com/info/basic/DataModelMapper.xml"/>
	</mappers>
</configuration>

可参考教程:http://blog.csdn.net/kutejava/article/details/9164353#t0

4、服务器端逻辑代码结构如下:

com.info.test是功能模块,TestService.java是接口,对应TestServiceImpl是接口实现部分,内部需要实例化DataModelMapper,然后能使用Mybatis中的增删改查了。

com.info.rest主要是处理客户端传来的请求,获取参数,调用相应的功能等等。

package com.info.rest;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;

import net.sf.json.JSONException;
import net.sf.json.JSONObject;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.http.MediaType;

import com.info.basic.DataModelMapper;
import com.info.test.TestServiceImpl;

@Path("/TestService")
public class TestServiceREST {
	private ApplicationContext ct;
	private String[] configFiles = { "config/ApplicationContext.xml" };
	
	@GET
	@Path("/getUser")
//	@Consumes(MediaType.TEXT_PLAIN)
//	@Produces(MediaType.APPLICATION_JSON)
	public String getUser(String username,@Context HttpServletRequest req)throws JSONException{
		ct = new ClassPathXmlApplicationContext(configFiles);
		String retData = "";
		
		String userName = (String) req.getSession().getAttribute("userName");
		DataModelMapper dtMapper = (DataModelMapper) ct.getBean("DataModelMapper");
		
		TestServiceImpl testService = new TestServiceImpl(dtMapper);
		List<HashMap<String,Object>> userList = testService.selectUsers();
		HashMap<String, Object> result = new HashMap<String, Object>();
		result.put("data", userList);
		retData = "[" + JSONObject.fromObject(result).toString() + "]";
		return retData;
	}
}
这里面有一个问题:

//	@Consumes(MediaType.TEXT_PLAIN)
//	@Produces(MediaType.APPLICATION_JSON)
如果写上这两句会报错,原因还没找出来。

com.info.basic里面暂时只写了mybatis中的增删改查语句,采用接口的形式调用。


5、配置web.xml文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>RestfulTest</display-name> 
<servlet> 
<servlet-name>Jersey REST Service</servlet-name> 
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
<init-param> 
<strong><em><u><param-name>com.sun.jersey.config.property.packages</param-name> 
<param-value>com.info.rest</param-value> </u></em></strong>
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<strong><em><u><servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/rest/*</url-pattern> </u></em></strong>
</servlet-mapping> 
</web-app>

6、调用形式

http://localhost:8080/RestfulTest/rest/TestService/getUser


以上就是搭建过程,其中涉及到许多细节问题,有些地方也没完全搞明白,三个框架和架构对于自己来说都是新知识,也是第一次使用这三个东西写项目。等下次有时间再进行总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值