SSM框架之MyBatis的增删改查
普通的CRUD
如果还没有搭建MyBatis的环境,请参考上一节SSM框架之MyBatis的环境搭建https://blog..net/grd_java/article/details/104896816
-
1、重写测试方法
-
2、增操作 首先在接口中添加一个方法,传入一个Ssm类对象作为参数 实体类中,我添加了一个有参构造(记住把无参构造补上),没有初始化id,因为我的数据库id字段自动增长 最后在mapper映射中添加insert标签,这里想要取到方法传来的值,可以使用#{属性名}的方式 3、改操作 4、删除 5、模糊查询
-
6、单个查询 7、查询总记录
-
8、插入时获取id 9、级联查询(多表查询) myBatis可以通过属性名.属性的形式调用级联属性,实现多对象查询 10、若实体类名和数据库列名不匹配怎么办 当不匹配时,会无法正确封装数据,这时可以将属性与字段的映射,用sql中起别名或者使用resultMap标签指定映射,直接起别名执行的效率高,使用resultMap开发效率高
动态sql
-
where和if标签(动态查询) 当我们想要实现,根据用户传入的不同条件,查找出相应数据,如果只传入id,就按id查,传入了姓名和密码,就按姓名和密码查,想要实现这些需要动态sql set标签(动态修改) 当我们需要根据用户传入信息动态修改时,根据条件,可能会在结尾出现逗号,比如id=id,where,这样是错的,这时通过set标签解决 choose_when_otherwise(MyBatis中的whitch条件语句) 当我们想要实现满足某一个条件,就按照这个条件去查,其他条件就不在去看,或者所有条件都不满足,按照默认条件去查询时,就可以使用此表签 foreach 多条件查询 多条件插入(一次插入多条数据) 批量删除 delete from ssm where id in(?,?,?) 删除和查询一样,循环()里面内容即可 批量修改 update ssm set username=#{username}…where id=#{id}; 修改需要重复循环这条语句,但是jdbc不支持将多个用分号结尾的语句拼接成一个,这时我们在驱动后面加一个参数即可
resultMap标签,自定义映射(用来完成多表,级联)
-
使用resultMap映射数据库字段名和java实体类属性
-
多表级联查询(一对一,一个人有一辆车)
-
使用association直接完成级联映射
-
分步查询实现一对一 一对多(一种车型可以被很多人拥有)