`

SpringDataJpa杂记(二) SpringMVC与SpringDataJpa小集成

阅读更多
零) 代码
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(value = "/c")
public class TestController {

	@ResponseBody
	@RequestMapping(value = "/t1", method = RequestMethod.GET)
	// http://localhost:8080/c/t1?page.page=2&page.size=50&page.sort=email&page.sort.dir=desc
	public Object test1(Pageable pageable) {
		PageRequest p = (PageRequest) pageable;
		System.out.println(p.getPageNumber() + " " + p.getPageSize() + " " + p.getSort());
		return "OK";
	}
	
	@ResponseBody
	@RequestMapping(value = "/t2/{id}", method = RequestMethod.GET)
	// http://localhost:8080/c/t2/1
	public Object test2(@PathVariable("id") User user) {
		return user;
	}

}


一) Web Pagination
代码参考上面的 test1()
这需要一个WebArgumentResolver实现,这个接口我还第一次注意,MethodArgumentResolver用过,两者用法大同小异。
<mvc:annotation-driven>
	<mvc:message-converters>
		<!-- ... -->
	</mvc:message-converters>
	<mvc:argument-resolvers>
		<!-- 配置 -->
		<bean class="org.springframework.data.web.PageableArgumentResolver" />
	</mvc:argument-resolvers>
</mvc:annotation-driven>


二) Domain class web binding for Spring MVC
代码参考上面 test2()
与Web Pagination 不同,这里不是使用的WebArgumentResolver或MethodArgumentResolver,而是注册PropertyEditor,
注册时这两个bean放在root上下文之中
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<property name="converters">
		<util:set>
		</util:set>
	</property>
	<property name="formatters">
		<util:set>
		</util:set>
	</property>
</bean>

<bean class="org.springframework.data.repository.support.DomainClassConverter">
	<constructor-arg ref="conversion-service" />
</bean>
分享到:
评论
3 楼 xiao574182979 2015-06-25  
这是我的配置文件
2 楼 xiao574182979 2015-06-25  

<context:component-scan base-package="com.xiao"></context:component-scan>
<mvc:annotation-driven conversion-service="conversion-service"></mvc:annotation-driven>

<bean id="conversion-service"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<util:set>
</util:set>
</property>
<property name="formatters">
<util:set>
</util:set>
</property>
</bean>

<bean
class="org.springframework.data.repository.support.DomainClassConverter">
<constructor-arg ref="conversion-service" />
</bean>
<!-- start -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- jpa持久化 实现厂商类 以hibernate 为例 -->
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"></property>
<!-- 实体类包路径 -->
<property name="packagesToScan">
<array>
<value>com.xiao.entity</value>
</array>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!-- hibernate厂商提供的jpa支持 -->
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
id="hibernateJpaVendorAdapter"></bean>
<!-- 启用扫描, 并进行代理支持 -->
<jpa:repositories base-package="com.xiao.dao"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="jpaTransactionManager" />
<!-- 失误提交 -->
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="jpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>
<!-- 开启事物 -->
<tx:annotation-driven transaction-manager="jpaTransactionManager"
proxy-target-class="true" />
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="mysql"></property>
</bean>

<!-- end -->

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="WEB-INF/jsp/" />
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
1 楼 xiao574182979 2015-06-25  
我按照你说的, 好像不行

相关推荐

Global site tag (gtag.js) - Google Analytics