00:00
好,那接下来呢,我们来看一下,我们今天第一个要讲的呢,就是如何自定义map。这样啊,好,那么如何自定义map呢?呃,首先我们肯定是要在我们自己写的这个map接口当中,我们自定义自己的方法,那么什么时候我们需要自定义map呢?就是当通用map当中的这一系列的方法没有办法满足我们的需求的时候,那我们呢,就可以自定义map了啊,比如说呢,现在我们想写一个比较复杂的这样的一个搜Q查询,但是想来想去呢,这个通用map里面呢,没有任何一个方法能够呃提供给我们这样的一个复杂的这样的一个搜Q查询,所以呢,我们就需要自定义SQL语句啊,那么自定义搜QL语句的前提呢,就是我们呢先要自定义一个接口map接口啊好,所以接下来呢,我们先在我们的user map当中去添加这样的一个接口方法啊。好,我直接复制过去吧。嗯,那我们打开我们的user map,然后呢,我们找到这个interface哈,你呢,想要添加什么样的方法,你直接把它定义到这个里面就可以了,那么定义的过程呢,大家需要注意啊,这个名字你是自己起的,然后呢,你需要嗯,查询什么,你需要查询一个列表,那你就返回一个列表,你需要查询一个对象,那你就返回一个对象,对不对,你需要一个布尔值啊,看看是执行成功了没有,那你就返回不,这完全是你自己定义的啊,根据自己的需要进行定义就可以了。好,然后接下来呢,我参数也是自己定义的,那么参数这一块也是一样的,根据实际的业务需求,我们自己呢,来啊,把这个必要的参数给它填充上啊,比如说我现在就想根据一个名字来查询出一个用户来啊,那我呢,就在这个地方呢,填写一个名字参数就可以了,那接下来呢,我们就可以实现这个具体的啊一个SQL语句了,那很。
01:58
显然,呃,这个是我们自定义的一个函数,那么自定义的一个函数呢,呃,这个circle呢,就必须由我们自己来完成了,所以呢,接下来呢,我们下一个步骤呢,就是创建一个XML文件啊好,那这个XML文件我们创建在哪呢?默认情况下啊,如果最少开发量的话,那么我们就创建在我们整个的。
02:22
呃,买贝应用程序它默认读取XL文件的一个目录位置,那默认情况下呢,这个XL文件是属于资源文件,所以呢,我们把它创建在这个资源目录当中,那资源目录就是resources了,那还有一个默认的一个名字,就是在资源目录下面呢,我们必须得起一个啊名字叫做。Map的这样的一个文件夹啊,然后这个名字叫做map的文件夹呢,它是默认的资源文件当中的一个存储我们的map配置的这样的一个文件目录,所以呢,我们在这个地方new一下directory叫map,注意这个是一个默认的名字啊,然后接下来呢,在map这个目录当中,我们呢,创建一个。
03:15
配置文件,根据我们之前学习的内容,那最好的方式呢,就是这个配置文件的名字呢,你直接和接口的名字保持一致就可以了,所以这块呢是user。Map,当然它的扩展名不一样,叫点XML,好,那么我们就把这个XML文件呢创建出来了,那么XML文件的一些啊,什么文件头呀,呃,这个do type定义呀,这面我们就不去,呃再次的去强调了,我直接把它复制过来,包括这个namespace呀,都是咱们大家之前学过的内容,是不是,所以呢,咱们一并复制过来啊好,那这块呢,和我们之前学习的买be斯的这个概念呢,是没有任何区别啊好,所有的这个特性啊,啊所有的这些解释啊,跟买be里面是一模一样的,所以呢,我们需要在这个地方首先定义XL声明,定义do type声明,然后定义我们的map根节点,然后在map根节点里面呢写我们的namespace,那么大家需要注意的就是这个namespace后面的这个实体类的名字,它是一个完全的一个限定名所。
04:28
所以呢,我们就需要把这个user map所在的这个包名完整的写到这个位置哈,好,那这块我们写好了之后呢,我们就可以写我们的呃,SQL语句了,那我们的搜QL语句写什么呢?其实呢,就是针对它来做具体的实现,那么在这个过程当中呢,我们因为之前装了买贝斯X那样的一个插件,所以这边就出现一只鸟哈,然后呢,这面呢,也也也出现一只鸟,好,这个红鸟蓝鸟呢,它俩是互相配合的啊,他俩是一对,所以你点蓝鸟就跳到横鸟,你点横鸟跳到蓝鸟是不是好,然后接下来呢,在这个地方它就会出现一个波浪线,这个波浪线是什么呢?也是插件配合我们来提示的,就是如果你呢,在XML文件当中没有对这个接口的这样的一个抽象方法进行一个实现的话,那么这面直接就波浪了,告诉你没实现,那我们就可以在这个地方out加enter。
05:22
然后呢,选择generate statement第一项啊,然后这样的话呢,在这面呢。它就可以直接对应的生成这样的一个配置啊,Statement这样的一个节点,好,这是一个select的节点,那么在这个select的节点里面呢,我们就可以写自己的SQL语句了,同样无论这个SQL语句多复杂,你都可以自己在这定义,那SQL语句定义的方法和原则跟之前咱们学买的时候是一模一样的,没有任何区别啊好,然后嗯,接下来呢,我们就在这个地方呢,去写我们的circle就可以了,那这就随意了,比如说select星是吧?啊,然后呢,From。
06:06
User是吧,啊,然后我们把这个SQL语句就写小这个简单一点啊,就是象征性的写一下,大家知道怎么定义就行了,好,那这个地方呢,我就井号。然后呢,Name明白吧啊,所以呢,这块呢,我们就定义完了一个circle了啊,那定义完这个circle之后呢,假设说你这个地方你不想用星写,你想用这个列名写,因为呃,我们也知道在买SQL当中呢,如果用列名来太代替这个星的话呢,它的查询效率呢会更高一些,所以呢,我们可以些比如说ID啊。Name呀啊,然后age呀啊,然后email啊,对不对,所以呢,我们就可以把这个部分的内容呢,就给它啊,变成这个我们一个一个的这个列名哈,好那嗯,接下来呢,我们还可以在。
07:00
这个地方呢,就是呃,把它生成什么呢?把它生成我们的一个SQ片段,对吧,所以在这个地方呢,你呢可以写一个。Circle是吧,ID这块呢,你可以自己去定义,比如说base。Column啊,就是基础类的,呃,基础列啊。应该这么写吧,嗯,然后list,好,那这个就是基础列名列表啊,我把所有的这个基础列名呢,可以都定义在这个里面,所以呢,在这个地方呢,我们就可以把这几个列呢,就给它剪过来,剪过来之后呢,这面和你之前一样,可以用in include来代替,然后这块呢,选择base column list,同时呢,啊,因为中间这个呃,节点中间这个位置呢,是没有任何内容的,所以呢,我们直接可以给他字节输掉就可以了,所以这块呢,就是我们写的这样的一个自定义的SQL语句了,是不是啊好那。
08:01
这块写好了之后呢,我们就可以去使用它了,那如何去使用它呢?在我们的呃测试里面,比如说我们这个是一个自定义的map,那我们就在map test里面进行测试,我们在map test里面呢,针对刚才咱们这个select or by name进行测试,所以呢,在这面我们就双击,然后进来,进来之后呢,我们写一个。Test,然后呢,我们写一个public啊,Wide,然后test刚才这个select on by name,好,然后接下来呢,我在。这个地方呢,我就呃去。Test,嗯,接下来呢,在这个地方呢,我就去调用啊。我去调用,我调用什么呢?我就去调用,刚才咱们写的这个方法就是user map。我这个原括号谁给我删了。
09:02
User map啊,点点什么呢?Select or by name对吧?嗯,好,然后接下来呢,在这地方你就随便写就行了,比如说我现在看一下数据库里都有啥。有这个Jack哈,我也选他吧。Jack,然后呢,我就得到了一个列表users,嗯,然后接下来呢,我在user users.for each SOC啊然后呢,把它定义出来就可以了,好,接下来我们运行一下。好,那接下来呢,我们来看后面的这块是不是就完成了我们的这样的一个查询呀,啊,当然了,现在的这种查询它比较简单啊,其实呃,利用我们前面的这个base map的话,其实也是有方法把这种方式的这样的一个SQ语句自动的组装出来的,并不是非要我们去定义这样的一个自定义的map,那我们在这个地方呢,只是利用这样的一个简单的例子来讲一下自定义的map怎么去使用,那么同时呢,未来大家可以在这个里面写非常复杂的SQL语句都是没有问题的,所以这块呢,就是我们的扩展map啊如何对啊,通用map做扩展的一个具体的方式。
我来说两句