MyBatis程序中的CRUD增删查改
先将原代码中的所有的UserDao修改为UserMapper


session关闭
SqlSession是通过SqlSessionFactory来构造的,相当于维护一个连接池,当我们不停的进行查询的时候,由于没有关闭连接,导致与数据库的连接数量达到了一个上限(可能连接池有最大连接数,但是我们有找到文档)。到达上限之后,再次请求查询时,Factory说没有连接了,让你先等一下,它先去判断哪些SqlSession已经没有人使用了(类似于垃圾回收机制),然后调用相应的进程去自动关闭没用的session连接,注意调用进程可是要排队的,也要耗时间。等关闭了没有用的session之后,Factory通知你,有空闲的session了,开始准备你的查询吧,所有才会有等待很长一段时间才出现。也有可能导致内存泄漏
1.1、namespace
namespace中的包名要和接口的包名一致
1.2、select
选择查询语句

- id :对应的namespace中的方法名
- resultType:Sql语句执行的返回值
- parameterType:参数类型

#{} ==实现的是sql语句的预处理参数、之后执行sql中用?号代替、使用时不需要关注数据类型、mybatis自动实现数据类型的转换、并且可以防止sql注入 ==
1.3、insert

MyBatis底层是对JDBC的封装,所以在插入、修改、删除时返回的都是int类型,表示受影响的行数。
在insert、update、delete标签中没有resultType属性,认为返回值都是int
在原来的JDBC中会自动提交事务,但是在MyBatis中默认关闭了JDBC的自动提交功能,最后要使用session.commit()提交事务,否则数据不会发生改变

1.4、Update
原来



1.5、Delete
原来


之后

本文详细介绍了MyBatis中CRUD操作的实现,包括如何修改UserDao为UserMapper,以及SqlSession的关闭原理。在MyBatis中,namespace应与接口包名一致,select标签设置查询语句,insert、update、delete标签用于数据的增删改,返回值通常为int型。值得注意的是,MyBatis默认关闭了JDBC的自动提交,需要手动调用session.commit()提交事务。
159

被折叠的 条评论
为什么被折叠?



