遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?
可能的原因有几种:
没有提交事务:在使用 MyBatis 进行数据库操作时,需要手动提交事务。你可以在插入数据完成后调用
commit()
方法来提交事务。如果没有提交事务,数据库中的数据不会被实际保存。配置问题:请确保你的数据库连接配置正确,并且连接到了正确的数据库。可以检查配置文件中的数据库URL、用户名和密码等信息是否正确。
SQL语句错误:请检查你的插入语句是否正确。可能存在语法错误或者数据类型不匹配等问题导致插入失败。可以尝试手动执行相同的 SQL 语句来验证。
数据库自动提交设置:有些数据库默认情况下是自动提交的,即每次执行 SQL 语句后会自动将修改保存到数据库。如果你的数据库是自动提交模式,可能是其他代码修改了数据后没有及时提交导致看不到变化。
数据库事务隔离级别:如果你在启用了事务的情况下进行插入操作,可能是由于事务隔离级别导致的。可以尝试将事务隔离级别设置为 READ_COMMITTED,或者禁用事务来验证是否能够正常插入数据。
希望以上提示能够帮助你找到问题所在并解决。如果问题仍然存在,请提供更多细节和代码,以便更好地帮助你解决。
第一次代码:
public class InsertDataTest {public static void main(String[] args) {Emp emp =new Emp("102","王二浪","男",29,"23232323232323","武当山","2000-10-20");MyBatisUtil util = new MyBatisUtil();SqlSession sqlSession = util.getSqlSession();int insertData = sqlSession.insert("insertData", emp);System.out.println(insertData);}}
结果:
控制台结果输出的是没有问题的,趋势输出了,达到了预期效果,但是回到数据库中但是数据没有提交上去,最后发现我们在刚开始配置事务管理器时配置的是如下图,所以是开启了事务的,我们没有提交所以事务不会被提交;
正确代码:
public class InsertDataTest {public static void main(String[] args) {Emp emp =new Emp("102","王二浪","男",29,"23232323232323","武当山","2000-10-20");MyBatisUtil util = new MyBatisUtil();SqlSession sqlSession = util.getSqlSession();int insertData = sqlSession.insert("insertData", emp);System.out.println(insertData);if (sqlSession != null) {sqlSession.commit();sqlSession.close();}}}