springMVC +mybites 中SqlSessionDaoSupport 的使用

  使用spring注解的方式,使用 mybites 中的 SqlSessionDaoSupport 

 只是测试的例子,表中只有2个字段

1 。继承SqlSessionDaoSupport 的顶级dao 层代码

 

package com.inf.base;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;

import com.inf.system.utiles.PropertyUtils;
import com.inf.system.utiles.page.PageBean;

/**
 * 顶层接口
 * @author zongxin
 */
public  class BaseDao extends SqlSessionDaoSupport{

	/*
	 // 使用 SqlSessionTemplate
	 @Autowired
	 private SqlSessionTemplate sqlSessionTemplate;
	
	 @Autowired
	 public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate)
     {
		super.setSqlSessionTemplate(sqlSessionTemplate);
     }*/
	
	//使用sqlSessionFactory
	@Autowired 
	private  SqlSessionFactory sqlSessionFactory;
		
	@Autowired
	 public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory)
	  {
	      super.setSqlSessionFactory(sqlSessionFactory);
	  }
	
	/**
	 * 执行insert操作
	 * @param statement
	 * @return
	 */
	public int insert(String statement) {
		return getSqlSession().insert(statement);
	}

	/**
	 * 执行insert操作
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public int insert(String statement, Object parameter) {
		return getSqlSession().insert(statement, parameter);
	}
	
	public int update(String statement) {
		return getSqlSession().update(statement);
	}

	public int update(String statement, Object parameter) {
		return getSqlSession().update(statement, parameter);
	}
	
	public int delete(String statement) {
		return getSqlSession().delete(statement);
	}
	
	public int delete(String statement, Object parameter) {
		return getSqlSession().delete(statement, parameter);
	}
	
	/**
	 * 获取一个list集合
	 * @param statement
	 * @return
	 */
	public List<?> selectList(String statement) {
		return getSqlSession().selectList(statement);
	}
	
	/**
	 * 根据参数 获取一个list集合
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public List<?> selectList(String statement, Object parameter) {
		return getSqlSession().selectList(statement, parameter);
	}
	
	public Map<?, ?> selectMap(String statement, String mapKey) {
		return getSqlSession().selectMap(statement, mapKey);
	}

	public Map<?, ?> selectMap(String statement, Object parameter, String mapKey) {
		return getSqlSession().selectMap(statement, parameter, mapKey);
	}
	
	/**
	 * 获取Object对象
	 * @param statement
	 * @return
	 */
	public Object selectOne(String statement) {
		return getSqlSession().selectOne(statement);
	}
	
	/**
	 * 获取connection, 以便执行较为复杂的用法
	 * @return
	 */
	public Connection getConnection() {
		return getSqlSession().getConnection();
	}
	
}


2.实体类 代码:

      

package com.inf.sys.user.model;

public class TestGener {
  
	private Long generId;
	private String  generValue;
	
	
	public Long getGenerId() {
		return generId;
	}
	public void setGenerId(Long generId) {
		this.generId = generId;
	}
	public String getGenerValue() {
		return generValue;
	}
	public void setGenerValue(String generValue) {
		this.generValue = generValue;
	}
	  
}


3,dao层接口代码:

  

package com.inf.sys.user.repository;

public interface TestDao {
	public Long getTestIds(String generName);
}

4,dao的实现类代码


package com.inf.sys.user.repository.impl;


import org.springframework.stereotype.Repository;

import com.inf.base.BaseDao;
import com.inf.sys.user.repository.TestDao;

@Repository
public class TestDaoImpl extends BaseDao implements TestDao{

	public Long getTestIds(String generName){
		Object object= this.selectOne("com.inf.sys.user.mapper.TestMapper.getTestIds",generName);
		Long reault=Long.valueOf(String.valueOf(object));
		return reault;
	}
}


注意: 
com.inf.sys.user.mapper.TestMapper 为对应的mapper接口文件, <pre name="code" class="java">getTestIds 为对应的参数
 

5,mapper 接口代码:


package com.inf.sys.user.mapper;


public interface TestMapper {

	Long  getTestIds(String generName);
}


6.mapper 对应的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.inf.sys.user.mapper.TestMapper">

	<select id="getTestIds" parameterType="String" resultType="String">
		SELECT GENER_ID
		FROM tb_sys_id_generator
		WHERE GENER_VALUE=#{generName}
	</select>

</mapper>

7. 测试使用的action代码:

package com.inf.sys.user.action;

import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.inf.sys.user.repository.TestDao;
import com.inf.system.utiles.JsonBean;

//test
@Controller
@RequestMapping("test/")
public class TestCollection {
	
	@Autowired
	private TestDao testDao;

			
	@RequestMapping("testGetgen.do")
	public void testGetgen(@RequestParam(required=true) String generName,
			HttpServletRequest request, HttpServletResponse response) throws Exception{
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		
		Map<String, Object> result=new HashMap<String, Object>();
		Long resulte=testDao.getTestIds(generName);
		result.put("success",true);
		result.put("msg",resulte);
		System.out.println( "this is result======"+result);
		PrintWriter out = response.getWriter();
		out.print(JsonBean.toJson(result));
	}
			
			
}


8.spring xml文件配置注意代码

<context:property-placeholder
		ignore-unresolvable="true" location="classpath*:/datasource.properties" />
	<context:property-placeholder
		ignore-unresolvable="true" location="classpath*:/config.properties" />
	<context:property-placeholder
		ignore-unresolvable="true" location="classpath*:/applicationContext.properties" />

	<context:component-scan base-package="com.inf.sys">
		<context:exclude-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
		<context:exclude-filter type="annotation"
			expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>

	<bean id="abstractDataSource" abstract="true"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${datasource.driverClass}" />
		<property name="validationQuery" value="${datasource.validationQuery}" />
		<property name="maxIdle" value="${datasource.maxIdle}" />
		<property name="minIdle" value="${datasource.minIdle}" />
		<property name="maxActive" value="${datasource.maxActive}" />
		<property name="initialSize" value="${datasource.initialSize}" />
	</bean>

	<!-- 默认数据源-mybatis使用 -->
	<bean id="dataSource" parent="abstractDataSource">
		<property name="url" value="${datasource.url.0}" />
		<property name="username" value="${datasource.username}" />
		<property name="password" value="${datasource.password}" />
	</bean>


	<!--事务管理器配置 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 定义SqlSessionFactoryBean -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<property name="mapperLocations" value="classpath:com/inf/sys/*/mapper/*.xml" />
		<property name="typeAliasesPackage" value="com.inf.sys.*.model" />
	</bean>

	<!-- <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> 
		<constructor-arg index="0" ref="sqlSessionFactory" /> </bean> -->

	<!-- 扫描Mapper文件,并实施自动注入 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<property name="basePackage" value="com.inf.sys.*.mapper;" />
	</bean>


注意:

在dao的实现类上增加注解  @Repository 

      在 顶层dao类 baseDa 中 

      @Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory)
 {
     super.setSqlSessionFactory(sqlSessionFactory);
 }

 注入sqlSessionFactory  或者是 sqlSessionTemplate


 通常使用mybites 直接使用mapper的方式 ,不使用dao层接口和dao的实现类,

applicationContext.xml 中的配置   :

	<!-- 扫描Mapper文件,并实施自动注入 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<property name="basePackage" value="com.inf.sys.*.mapper;" />
	</bean>

 




	<!-- 扫描Mapper文件,并实施自动注入 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<property name="basePackage" value="com.inf.sys.*.mapper;" />
	</bean>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值