使用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));
}
}
<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>