mybatis+spring3.1 dao继承SqlSessionDaoSupport后使用sqlsession.delete() 为啥返回-2147482646这个值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis+spring3.1 dao继承SqlSessionDaoSupport后使用sqlsession.delete() 为啥返回-2147482646这个值?相关的知识,希望对你有一定的参考价值。
而使用单独 mybatis 的sqlsession.delete() 返回的是 0 或者 1 ??
参考技术A 如果在执行增删改的时候,设置了批量执行就会返回-2147482646 ,把批量执行去掉,就好了 参考技术B 我也是这个问题……执行插入完成之后,返回新增数据的id值,结果是这个鸟东西……蛋疼啊 参考技术C 整合后建议你使用SqlSessionTemplate。 参考技术D 帖代码上来看看
Mybatis-spring 传统dao开发
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8 jdbc.username=root jdbc.password=123456
log4j.properties
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
1、mybatis核心配置文件sqlMapperConfig.xml 加载mapper文件
<?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>
<mappers>
<mapper resource="mybatis/user.xml"/>
</mappers>
</configuration>
2、spring核心配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 加载配置文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 数据库连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 连接池的最大数据库连接数 --> <property name="maxActive" value="10" /> <!-- 最大空闲数 --> <property name="maxIdle" value="5" /> </bean> <!-- SqlSessionFactoryBean 配置--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource" /> <!-- 加载 mybatis核心文件sqlMapperConfig配置文件--> <property name="configLocation" value="classpath:sqlMapperConfig.xml" /> <!-- 别名包扫描--> <property name="typeAliasesPackage" value="com.cn.pojo"/> </bean> <!-- 传统dao开发 --> <bean class="com.cn.dao.impl.UserDaoImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> </beans>
3、UserDao.java
package com.cn.dao; import com.cn.pojo.User; public interface UserDao { User getUserById(Integer id); }
4.UserDaoImpl.java extends SqlSessionDaoSupport implements UserDao
package com.cn.dao.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.support.SqlSessionDaoSupport; import com.cn.dao.UserDao; import com.cn.pojo.User; public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ @Override public User getUserById(Integer id) { SqlSession sqlSession = super.getSqlSession(); User selectOne = sqlSession.selectOne("user.getUserById",id); // 不能关闭sqlSession return selectOne; } }
4.mapper文件user.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"> <!-- namespace命名空间,隔离sql文件 --> <!-- #{}占位符相当于jdbc的? --> <!-- ${value} 字符串拼接 --> <mapper namespace="user"> <select id="getUserById" parameterType="int" resultType="user"> select id, username,birthday,sex,address from user where id = #{id} </select> </mapper>
5、将UserDaoImpl注入到bean
<!-- 传统dao开发 -->
<bean class="com.cn.dao.impl.UserDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
5.测试UserDaoTest.java
加载spring核心文件
applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
package com.cn.dao; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cn.pojo.User; public class UserDaoTest { private ApplicationContext applicationContext; @Before public void init() { applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); } @Test public void test() { System.out.println(1); UserDao userdao = applicationContext.getBean(UserDao.class); User userById = userdao.getUserById(1); System.out.println(userById); } }
以上是关于mybatis+spring3.1 dao继承SqlSessionDaoSupport后使用sqlsession.delete() 为啥返回-2147482646这个值?的主要内容,如果未能解决你的问题,请参考以下文章