00:00
好,通过上面的这个例子的学习呢,我们会发现我们的通用map呢,貌似功能很强大,所以接下来呢,我们的基本的CD的第一组例子呢,就是利用通用map做一个增长改查,当然了,我相信到目前为止呢,大家其实根据之前已经学过的这样的一些知识储备啊,给你通用matter,你应该自己能够把增长改查独立的做出来,那作为一个知识的完整性呢,我在这个里面呢,也给大家去完整的讲一下,那所谓的CD呢,就是增加查询,更新和删除,那我们依次的来看一下,首先呢,我们在我们的项目当中呢,再创建一个测试类,这测试类呢,就叫map test,然后在这个测试类当中呢,我们直接注入这个user matter啊这个依赖好,所以呢,我们来先把其他的。文件先关掉啊。然后接下来呢,我们找到我们的测试录test里面啊,这个测试目录右键Java class,创建一个map test,那么跟之前一样,我们呢是需要创建我们的上下文测试环境的,所以呢把spring的test把它写上,接下来呢,我们做依赖,那么我们依然呢用我们的resource依赖,然后呢,注入我们的user map这个依赖好,接下来呢,我们写我们基本的CD,我们先来写第一个叫增加,所以呢我们先写test public test insert好,那么这个测试用例我们写什么呢?写的是增加的功能啊,那增加的功能呢,很显然我们要用到user matter里面的,我们来找一找,里面有一个音色的方法,那这个音色的方法呢,它接收一个user entity这样的一个实体,对不对啊,所以呢,我们。
01:59
嗯,就需要呢,为这个方法呢,先创建一个user这样的一个实体类啊,所以呢,接下来我们就知道我们要做什么了,先创建实体,创建user,好,接下来呢,我们为这个实体呢,设置它里面的成员,那么这个里面一共有四个成员,注意我呢先设置其他的三个ID,我先不设置,我们看一下一会能不能插入进去啊,所以我先设置name name的话。
02:28
嗯,现在比较火的,比如说建国同志好,接下来呢,User点2s age金和同志。70几74吧,好,然后接下来呢,嗯,是优点。Email哈,Email,嗯,要见过吧。嗯。就有点com哈,好,然后接下来呢,呃,我们把它的这个用户对象创建完成之后呢,我们直接就insert,好insert它有一个返回值啊,这个返回值呢,大家可以看到它是int类型的,我们呢给它定义一个结果叫result吧,好,然后接下来呢,我们把这个早呢给他打印出来,看看它是什么。
03:25
啊好,接下来呢,我们先来对这个增加功能呢做一个测试,右键运行一下。好,大家看一下。在最后这个地方呢,我们先来看我们输出的这个结果是一,也就是说我们在数据库当中成功的增加了一条记录,那么由我们的日志文件输出的一个结果呢,也同样啊,能看到一个相同的一个输出啊,首先呢,它执行的一个SQL语句,那这个SQL语句呢,它执行的是一个音色的语句,并且呢,呃,通过我们的设置呢,会发现name age和email都被通过,参数呢设置到一年了,那这块通过的,呃参数呢是prepare statement里面的这个问号占位符来设置的,那这个占位符里面呢,一共有四个参数,但是我们只设置了三个,那第一个参数呢是ID,那很显然这个ID呢,哎,它是应该是有一点说法,它是通过某一种策略生成的,是不是啊,我们先把它作为一个疑问放在这后面呢,我们有一个部分呢,会专门去讲啊,这个ID呢,它是什么,以及它是通过什么样的一个策略生成的,好接下来呢,它对我们的数据库呢。
04:45
做了一个更新,那相当于呢,增加了一条记录啊好,那所以这块呢,就是我们整个能够看到的一个结果了,那么我们再来看一下我们的数据库刷新一下。是不是这样的话呢,这个建国呢,就被啊插入到我们的数据库当中了,我们在这个地方呢,也可以看到刚才刚刚生成的这样的一个ID。
05:08
这是我们的增加功能,接下来呢,我们再来看一下查询功能。查询功能呢,我们。嗯,我们重写一下吧,叫做test,然后public wide test查询功能叫select吧,好,然后呢,我们要用到的是user matter里面,这里面呢,我们已经用过这个select list了,所以呢,我们用另外一个比较常用的叫select by ID,大家都知道,这个呢,肯定是根据ID来进行一个查询,那么它需要的参数呢,是civilizeable,所谓的civilizeable呢,就是可以被序列化的一个类型就可以了,那这里面呢,既包含比如说int类型,也包含long类型啊,当然了,必须是一个。类类型的啊,就是大写的IN7本或者是大写的log啊都可以好,那么因为有这个呃,自动装箱这样的一个特性,所以呢,我们也直接可以写这样的一个数字,在这个地方,那我们能够得到的一个结果呢,就是一个优色对象了,所以接下来呢,我们可以把这个user呢给它输出一下,所以这是我们的第一个查询,那我们在测试一些其他的查询功能,比如说user matter,第二那除了select by ID之外呢,还有一个叫做select select啊Bach ID叫通过ID进行批量的查询,那很显然这个通过这个参数我们可以看到这个里面呢,是接收一个集合类型的一个ID列表的,所以呢,我们可以创建一个ID列表作为参数呢,给它传进去,那在这个位置呢,我们可以通过一个。
06:54
数组的一个工具啊,叫as ari这个工具里面,它有一个叫s list的这么一个方法,它可以接收一个不定长度的一个参数啊,也就是说你可以传递任何类型的一个不定常数的参数列表,然后它可以自动的把这个参数列表里面的内容呢,给你封装到一个集合里面,所以呢,我们可以用一下这个s list,好然后在这个里面呢,比如说我就传123是吧?啊,那我们就传这样的三个参数进来,这样的话呢,我能得到什么呢?我能还是得到一个user的一个数据列表啊好,那么我还是用同样的方式呢,把这个数据列表呢,给它打印出来。
07:38
好,这是我们啊能够执行的第二个比较简单的一个查询,最后呢,我们再来看一个比较常用的一个查询,就是根据条件来查,根据什么条件呢,根据集合来查user map,然后点。Select。
08:00
好,那这个select by map呢,大家可以看到它里面所接收的参数呢,是一个map集合类型的,那这个map集合类型呢,通过我们之前的这个经验,我们可以猜一猜它是干什么的,那应该就是里面会有一些键。里面会有一些。嗯。里面会有一些键啊,还有一些值,好,那这些键呢,代表什么呀?代表你要查的列,这个值代表什么呀?代表这个列的值等于什么,也就是说你这个键具体的一个查询条件,那我们来举一个例子,比如说呢,我这面呢有一个慢集合。我来创建一个map集合。呃,我创建的map集合,嗯,我想一下,我就是哈希map吧,哈希map,然后这个map集合呢,我前面键呢是string类型的代表呢,你的这个属性的名字是什么,后面值呢是object吧,也就是说呢,我可以接受任何类型的这样的一个数据类型,然后呢,我把它放在一个map里面啊,如果你想用面向对象的啊,就是这个啊饭呃。
09:13
这个面向接口的编程方式的话呢,我们可以在这个地方写一个map啊,然后接下来呢,我们就map点啊put在这面呢,我们去比如说我想查name。Name等于啥的呢?Name等于建国的是不是的这样的一个人啊,然后呢,我还想查map啊,Put put什么呢?Put,嗯,年龄吧,Age age等于多少,Age等于74啊,就这样一个人,那这样的话呢,我就可以组装一个搜狗语句出来了,好那么这个so口L语句呢,很显然就是name等于见过and age等于74啊,然后我们把这个map呢,就可以放到后面的这个原括号当中了,好放到原括号当中之后呢,我们来看一下,它呢依然也会给我们返回一个user list,那我们就叫它user CE吧,好接下来呢,我们就把这个USERS1呢给它打印出来啊,users1.foreach,然后呢,好,我们整体的把这三个给它运行一下,因为这三个都比较简单,所以我们一起来运行一下。
10:32
好,我们来看啊,这里面应该是生成了三组SQL语句,第一组SQL语句我们应该非常清晰的了解到,它就是where ID等,然后传进去一个ID,我们把当前的这个记录呢,就查询到了,好,这是第一组,第二组搜索语句呢,它是一个批量查询,那么它会自动帮助我们生成一个英语句,并且呢,把我们传进到列表当中的这三个值呢,放到英语句的这个逗号风格的啊,这样的一个数据列表当中,好,这是第二个色口,第三个呢,就是刚才我们所说的一个查询语句,那这个查询语句呢,会将map集合当中的不同的条件用and给它连接起来,然后呢,放到where语句后面,这样的话呢,组成一个我们。
11:20
标准的一个查询语句哈,好,那这个就是我们三个最基本的查询,也是三个比较简单常用的查询了,那如果大家想用其他的查询的话呢,你课下的时候也可以去试一试这个里面的其他的内容,比如说。啊,Select count是吧?啊,这个呢是查询一个结果的数量有多少,还有呢就是select one,这个呢就是查询一个结果,这个结果呢只有一条记录,如果你组装的查询条件,嗯,可以组装出可以查询出多个数据结果的话,那这条语句呢就会报错啊,所以大家有兴趣的话呢,都可以自己去课下的时候试一试,那我就不把每一个接口的方法都给大家在课堂上去做实验了,好所以这个呢是我们三个查询,接下来呢,我们再来看一下一个增加test。
12:14
Have wide test啊,Update啊,更新好,接下来呢,我们很显然要用到user make里面的update by I这个方法,那么这里面有两个方法,一个呢是update,一个呢是update by ID,其中上面这个update比较复杂,这个我们后面再看,我们先来看一下这个update by ID,那它呢要接收一个user对象,而这个user对象呢,它只有一个entity,那既然这个方法的名字啊叫做by ID。叫做白ID,所以呢,很显然我们呢,就需要干嘛呢,就需要在这个安里面给它传一个ID进去,才能够使我们的这个方法成立,所以呢,我们就在前面呢,创建一个带ID的user对象,所以我们new一个user,好,然后接下来呢,我们把这个优色创建出来啊,首先呢,我们先设置一个ID啊。
13:19
设置一个ID好,我们查谁呢?我们就查这个一,那现在呢,因为这是我们user里面的set ID方法,我们user里呢,这个ID呢,它是一个long long啊类型的,所以呢,这个地方需要我们传一个L进来,接下来呢,我们再写一个set,比如说set user啊点set age,好,那我要把ID为一的这个用户,他的年龄给他改成74。好,我们现在呢,先来看一下ID唯一的这个用户,他年龄是几是18,是不是我让他变成74啊好,然后呢,接下来呢,我呢,就把这个U色传到哪去呢?传到这个地方来,所以呢,这样的话呢,我们就完成了。
14:06
根据ID,根据这个ID修改这个user,修改谁呢?修改user里面的age属性好,那接下来呢,这个update的方法呢,它也会返回一个结果,这个结果依然是影响的行数,所以呢,我们可以把它打印一下结果好,接下来我们运行一下。好,我们直接来拉到最后啊,看这个结果,Update user set age where ID等于好,那这样的话呢,我们就把ID等于一的这个用户的年龄改成74了,我们来看一下数据库当中是不是这样一个结论,好,大家看这面年龄呢,已经变成74了,完成了刚才我们的这个操作,那么细心的同学呢,可能会在这个测试当中呢,还会发现一个问题,就是他默认情况下是一个动态circle,什么叫动态circle呢?大家一开始呢,在学买be的时候呢,会有这样的一个特点,就是如果呃,默认情况下,我们在啊XML文件当中不去配置动态思Q的话,那么你没设置的那些数据属性,它会给你设置成,那因为在这个user对象当中,除了ID和age之外,大家说这个user的name属性等于什么呀?
15:39
应该等于none对不对,这个user的email属性等于什么呀,应该也等于那啊,因为我们类当中默认情况下这种。字符串,或者说这样的一个类型的呃成员,它的默认值实际上是null,是nu啊,如果它的默认值是null是那样的话,那默认情况下,在买be当中,它会根据每一个属性的键和值帮助我们生成S口语句,那这样的话呢,Name和email就会给我们生成一个nu的这样的一个S语句,也就是说在这个位置。
16:20
在这个位置,它会生成的SQ语句呢,叫update site。Age。等于问号,然后呢,还有就是name等于none,还有就是email等于none,它会把那两个属性设置为none,而在my business plus当中呢,它有一个动态的SQL语句的一个自动生成的机制,它会对我们user色这个对象当中的属性进行判断,如果这个属性的值为nu的话,那么它就不对这个属性的值进行设置,所以呢就避免了我们对应用程序当中的对象进行误修改啊这样的一个操作,所以这个功能呢还是比较好用的啊,这块呢是我们的update,最后呢,我们来看一下delete。
17:10
White。对,Delete,对,好,接下来呢,我们直接用user map点,这里面呢有一个方法呢,叫delete by ID,好,这里面有三个方法,我只给大家测一个,其他两个方法我相信大家都能猜到是什么意思,Delete by ID是根据ID删delete by ID跟我们前面的查询一样,是根据ID列表删delete by map也跟我们前面的查询一样,是根据一个查询条件来删,而这个查询条件呢,是在map集合当中的建制,对组成的这个查询条件好,所以呢,我们就只测试这个白ID,那上面这个delay的方法啊,上面这个delete的方法,后面我们讲完这个record的时候,我们再来说它好,那所以在这个地方呢,我们就delete by ID,比如说呢,我们就把刚刚的那个创建国同学给它删掉吧,把它复制一下啊。
18:10
算了,把中删掉三间格有两个删好delete把ID啊,然后接下来呢,它也会啊,生成一个result的结果,所以呢,我们把这个结果呢给它打印出来,好,接下来呢,我们右键运行一下。好,我们来看最后的这个结果,那么我们会发现呢,数据库当中的一条记录呢,已经被改变了,实际上对于我们来说呢,就是被删除了,那我们来看一下今年的数据库,刷新一下,发现呢,ID为一的那条记录呢,已经不见了,所以呢,这就是我们通过通用matter来做的基本的增长改查,那这几个例子呢,就是一个抛砖引玉啊,其他的一些更多的方法呢,大家有兴趣的话,课下可以自己去试验一下。
我来说两句