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
原来
之后