MyBatis插入数据控制台插入成功,数据库无插入数据
【已解决】MyBatis插入数据控制台插入成功,数据库无插入数据
·
问题描述:
在测试mybatis插入数据时,测试类中显示插入信息成功,但是数据库中一直没有数据更新
问题原因:
mybatis在测试时需要获取数据库操作对象SqlSession,而SqlSession是由SqlSessionFactory 去创建的,默认的 openSession() 方法没有参数,没有参数时事务不会自动提交,当把openSession()方法的参数值设置成true时,可以开启事务自动提交功能。
解决办法:
以下是全部代码:
测试类:
//添加员工信息
int i = addEmpTest();
if(i>0){
System.out.println("添加"+i+"条员工信息");
}else{
System.out.println("添加失败!");
}
//添加员工信息
public static int addEmpTest() throws Exception {
//获取mapper
EmpMapper mapper = getEmpMapper();
//构建emp实体类
Emp emp = new Emp();
emp.setEname("jack");
emp.setPwd("1234555");
emp.setSalary(8888);
//添加员工
int i = mapper.addEmp(emp);
return i;
}
public static EmpMapper getEmpMapper() throws Exception {
//1.读取mybatis配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//2.获取SqlSessionFactory工厂
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = ssfb.build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
//利用sqlsession的getMapper生成dao层接口的动态代理实现类
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
//返回mapper
return mapper;
}
接口和映射文件
//添加一条员工信息
int addEmp(Emp emp);
<?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.lcx.dao.EmpMapper">
<!--定义一系列的持久化操作-->
<!--添加员工信息-->
<insert id="addEmp" parameterType="com.lcx.entity.Emp">
insert into emp (ename,password,salary) values (#{ename},#{pwd},#{salary})
</insert>
</mapper>
MyBatis配置文件
<?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> <!-- 指定义连接数据的配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test03"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 加载sql映射文件 --> <mappers> <mapper resource="com/lcx/dao/EmpMapper.xml"/> </mappers> </configuration>
更多推荐
已为社区贡献1条内容
所有评论(0)