00:00
好,那我们呢,呃,上午呢,学习的是这个query rapper啊,所以下午呢,我们继续呢,来学习其他几个rapper,那我们第一个要接触的呢,就是这个update wrapper啊好,那所以接下来呢,我们来看一看这个update wrapper啊是一个什么样的例子,我们点开看第三个update wrapper,那么他的需求呢,是和例四是一样的,所以呢,也就意味着我们要在这个例四的基础上,用不同的方式来实现一个同样的功能,所以呢我呢就把我的例四打开,然后咱们把例四复制一下,复制成一个例七啊。把它复制一下。好,张过来。接下来呢,我我把它改成例七,那么例四呢,我们先来回顾一下它,呃,具体实现了哪些功能,首先呢,它是根据一个有点复杂的一个查询条件,组装了这么一个查询语句啊,另外呢,因为整个这个呢,是根据查询条件做更新啊,所以呢,我们又组装了一个更新条件,最后呢,去执行了这个更新,那么我们的update wrapper。
01:11
啊,那它呢,是不但可以组装查询条件,并且呢是可以组装更新条件的,所以呢,一般情况下,在更新的时候,我们可以用update wrapper去组装更新条件和查询条件,那这样的话呢,我们就可以在这个地方把它改成update。Rapper啊,把后面这个位置呢,也改成update rapper,那同时呢,这个名字最好我们也给它改一下,然后接下来呢,这个地方改成update wrapper,这块改成update wrapper,好,这是第一步修改,第二步修改呢,就是我们既然update rapper可以组装更新条件,也就意味着呢,我们实际上可以不使用这种对象的方式去组装更新条件,怎么组装呢?我们先把上面的这段代码呢,先给它屏蔽掉,那么在这个位置呢,我们写点。
02:00
Set,那么我们要组装的更新条件,其中第一个呢,就是age是18啊,然后那个email是user.at硅谷点com,所以呢,这个地方呢,我们就写site age。等于。18啊,把所有查询出来的数据,把他的年龄都统一给改成18,接下来呢,Site。Email。等于这个email是不是好把所有查询出来的数据,把他的邮箱啊改成user at硅谷点com,好,那这个呢,就是我们要做的事情了,那么同时呢,后面这个地方update后面的这个user我们就可以直接写为none了啊,Null。好,这是我们这样的一个修改,好,那接下来呢,我们来执行一个测试。
03:04
我们直接来看它生成的SQL语句长什么样吧,那么它生成的SQL语句呢,啊是一个update语句,那他修改了我们的age,修改了我们的email,并且呢,根据我们的查询条件做了一个查询,也就是说在查询出这些记录之后,把这些记录的age和email呢,修改成我们指定的值,那我们指定的值呢,是18和这个当然了,他修改的记录数为零啊,因为我们目前为止啊,满足这个条件的记录已经不存在了哈,嗯,那嗯,貌似是没有什么问题,但是呢,仔细的想一想呢,其实是有点问题的,因为我们实际上在我们的应用程序当中呢,啊配置了。自动填充,那所谓的自动填充呢,它有两个功能,其中一个功能呢,就是在修改的时候呢,自动去更新我们的。修改时间啊,我们来看一下我们的例四。
04:01
类似呢,是通过这样的一种方式去组装更新条件的,所以在这个位置我们点击run的时候。看一下它的修改结果。你会发现呢,它的修改结果里面呢,是有update time的,也就是说通过类似的那种方式进行修改的话呢,是有啊这样的一个自动填充的功能呢,被呃这个追加到我们的应用程序的代码当中的,但是如果通过立期的这种方式呢,就没有办法去完成我们的自动填充了,但是实际上呢,并不是完全没有办法,我们呢,可以在执行更新的时候给他传一个user对象,也就是说他在update的时候呢,你要告诉他针对哪个对象,你要检查这个对象里面是不是有自动填充的一个字段,那么你一定要告诉这个update这个方法,我现在要更新的是哪个对象啊,所以呢,我们在这个地方呢,你一个。User。
05:00
好,直接把这个user对象传递给他,这样的话呢,在更新的时候,那么他就会啊,直接啊通过我们的自动填充的这样的一个功能呢,去检查user对象里啊,有没有一些相关的字段,有相关的费用属性,对吧?如果有的话,那么它就会做自动的一个填充啊,所以呢,如果有自动填充功能的话,这个地方呢,我们就必须把这个user对象传进去,如果没有的话,那这个地方可以直接写一个,那所以呢,我们再来测试一下。好,现在呢,我们这个测试已经完成了,然后接下来呢,我们来看一下SQL语句。那么搜QL语句呢,大家看这一次是不是有了update time呀,所以说呢,他在做更新的时候呢,啊,就做了我们的这个自动填充啊,所以这个是我们最终的一个解决方案了,那么从这个里面呢,大家也可以看到updateper它到底是做什么的,实际上呢,它就是做set的,但是呢,如果我们不使用update wrapper实际上也可以帮助我们完成相同的功能,也就是说使用TEST04的这种方式啊,去做这个数据的更新其实完全是可以的,所以呢,那呃,如果大家嫌这个呃知识量太大了的话,你完全可以把咱们刚刚学的这个TEST7忘记,是不是你把它忘了就行啊,因为呢,实际上我们用那个TEST4的方式完全可以实现它啊,也并不是很复杂。
06:36
好,这个是TEST7。
我来说两句