一 增删改查XML配置
注:下方是一些描述,具体执行继续往下看
1.如同上一篇文章所说,可以将XML配置文件看做一个类,namespace看做类的全地址,而无论是update还是select都看作是个方法,id看做方法名,可以设置paramterType与resultType控制返回类。。
2.不使用动态代理的情况下,能有一个参数,不过参数可以是map,可以是list,也可以是基本类型与Object衍生类。
二 增删改查Java代码实现
1.工具类的创建
(1)工具类中使用单例模式(懒汉式)来创建一个SqlSessionFactory对象(这里是必要的,不然会衍生出一些问题),如果不是同样的工厂创建Mapper是不一样的,这点会导致缓存信息错乱
(2)SqlSession是 一个重型的对象,使用后需要关闭,所以不建议单例SqlSession。
2.增删改
(1)第一个参数是全路径到方法(可以说方法的全路径名),第二个参数是方法的参数,当传入user,map时,可以直接使用key值或者属性名调用,而是基本类型或者String时可以0
(2)增删改的操作不必多说,没什么变化,根据传入的参数对数据做出Update操作,并且返回一个int值
(3)SqlSession内部通过Executor来执行Sql操作,而Executor由Config(总配置文件),Transaction(事务)生成,所以这些语句是以事务的方式执行的,需要手动调用Commit()提交
(4)如果需要自动提交事务,则在工具类中在工厂调用openSession方法的时候加入参数(true)(默认为false)。
(5)事务的回滚由MyBatis自行完成,当事务执行失败时。
3.查
(1)查询操作与前面类似,第二个参数为传入方法参数,可以将一些限制sql的条件参数放入其中
(2)select语句不会修改数据本质上是query方法的衍生,所以不需要作为事务处理(没有安全性需要考虑),MyBatis默认为提交(或许吧)
(3)select可以在resultType规定返回值类型,select方法中又分为selectMap,selectList,selectOne,One适用于单条数据查询,List用于多条数据查询。
(4)Map必须选择第二个参数作为设定一个列为Map的key值,不用太纠结,没啥用