mybatis plus学习笔记 CRUD 一

当加入spring的依赖包与mybatis plus依赖包后进行环境配置工作,其中mybatis plus需要依赖mybatis 与 mybatis–spring
在这里插入图片描述
数据库配置文件
在这里插入图片描述
log4j配置
在这里插入图片描述
mybatis plus全局配置文件
下面是重点,是applicationContext.xml文件的配置
在这里插入图片描述
在这里插入图片描述
然后用测试类测试
在这里插入图片描述
运行后没有报错,证明spring 容器中已经出现数据源,并且它可以连接到服务器。
对于上面的配置,我们配置mybatis sqlSession是mybatis的,我们要改成mybatis plus的要怎么办
在这里插入图片描述
我们要把SqlSessionFactory(mybatis的)更换为MybatisSqlSessionFactory(mp的)就可以成功使用mp了。
在这里插入图片描述
上图中,我们在javaBean类中添加了主键策略与对应数据库的表名,主键策略的value对应的是数据库的主键列。
在这里插入图片描述
在写javaBean对应的Mapper类时要继承BaseMapper它有基本的CRUD,泛型对应的是javaBean类。
我们还可以通过配置mp的全局配置文件来统一配置主键策略与表的前缀。
在这里插入图片描述
上述文件就可以配置mp的全局配置文件了第一个属性配置驼峰命名法,虽然这个默认是true,第二个属性配置的是主键策略,这里是自增,第三个属性配置的是表的前缀,由于数据库表明通常用***_***的方式,如果下划线前面的都一样,可以用第三种方式配置。
在这里插入图片描述
上图中TableField注解就是指定这个javaBean的属性对应的数据库字段是什么,另外meng属性在数据库中并不存在这个字段,那么做操作时就会报错,所以我们要在注解上加一个exist属性值为false,表示这个属性不与表中的列匹配。
在这里插入图片描述
上图是一个junit测试用例,mp在插入数据后会自动将主键值回写到javaBean中。
在这里插入图片描述
从打印结果看,它确实被回写到javaBean中了。
在这里插入图片描述
我们把setName与setAge注释掉,yonginsert方法运行,然后运行看看发生了什么sql语句。
在这里插入图片描述
看到insert语句只发了address,说框架会做一个非空判断,如果没传值,就不会insert,相对我们用insertAllColumn方法试一下,
在这里插入图片描述
结果:
在这里插入图片描述
可以看到就算我们没传值,它也会insert没传值的属性。
在这里插入图片描述
上图中我们队一条记录做修改时我们注释掉setName的设置,看看发送的sql语句是什么。
在这里插入图片描述
可以看到name字段没有发送,数据库中name字段的数据未做改变。
那么我们使用这个更新方法会出现什么问题呢?我们注释掉了setName属性。
在这里插入图片描述
在这里插入图片描述
可以看到所有的 字段它全部发送了,没有设置的属性全部修改为null在这里插入图片描述
所以用这个就要小心了,除非全部修改,否则有可能会清空数据。
mp查询操作:
T selectById(Serializable id)
T selectOne(@Param(“ew”)T entity)
List selectBatchIds(List<? exixts Serializable> idList)
List selectByMap(@Param(“cm”)Map<String,Object> columnMap)
List selectPage(RowBounds rowBounds,@Param(“ew”) Wrapper wrapper)
在这里插入图片描述
上图中使用id查询记录,我们查看结果:
在这里插入图片描述
在这里插入图片描述
下面我们通过sid与name查询记录,下图就是传入两个变量,然后用selectOne查询相应的记录。
在这里插入图片描述
在这里插入图片描述
上图的打印结果表明where 语句后面的条件有两个,一个是sid,另一个是name
但是我们加入要查询这种数据
在这里插入图片描述
用selectOne还可以么?
在这里插入图片描述
就像上图这样
在这里插入图片描述
报错,信息是selectOne只能查询一条数据,不能接受多条的结果。
在这里插入图片描述
上图就是按照id批量查询,首先创建一个list对象,然后将id塞到list中,然后放入selectBatchIds方法中,它内部就可以循环遍历取出信息,然后放入List中然后返回。下面查看过程与结果:
在这里插入图片描述
看这条sql语句就可以看出来它是采用in的方式来查询的。
在这里插入图片描述
上图是返回的List对象的集合。
下面我们用selectByMap()的方式查询数据
在这里插入图片描述
上图可以看出我们创建了一个Map对象,然后map的key一定要与数据库的列名对应,这里没有驼峰命名法一说,必须对应,否则报错,然后放到selectByMap方法中进行查询,下面看打印结果:
在这里插入图片描述
可以看到查询是没有问题的。
下面我们要练习一下分页查询
在这里插入图片描述
这个方法就是mp的分页查询方法,它需要传入两个参数,一个rowBounds(ibatis分页查询),另一个是wrapper(条件构造器,这个我还没看,我也不知道),但是我们不用rowbounds,用page,page是mp的类,它间接的继承了rowbounds类,所以用mp提供的page更直接。
在这里插入图片描述
在这里插入图片描述
可以看到Page继承了Pagination,Pagination又继承了RowBounds。
在这里插入图片描述
上图中我们用page作为参数,表示要看第二页,一页显示两行。我们查看打印结果:
在这里插入图片描述
结果是没问题的,但是sql语句则没有用limit,因为ibatis使用内存分页,所以没有limit
在这里插入图片描述
下面我们学参数操作:
删除操作有以下几种方法:
Integer deleteById(Serializable id);
Integer deleteByMap(@Param(“cm”)Map<String,Object> columnMap)
Integer deleteBatchIds(List<? extends Serializable> idList)
第一种是根据id删除对应的记录
第二种是用map的方式删除记录
第三种是批量删除记录
在这里插入图片描述
上图是根据id删除
在这里插入图片描述
上图是根据Map中给定的条件删除,但是与上面的查询一样,在map的key中不允许与数据库的列明不对应,必须对应,否则报错。
在这里插入图片描述
上图根据id批量删除数据记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值