00:00
好,那下面呢,我们就来看一下买be体获取参数值的两种方式啊,什么叫做获取参数值的两种方式呢?那首先大家要知道我们以后咱们开发的方向呢,是BS系统对吧?然后呢,我们现在咱们要做的任务就是通过浏览器,通过页面,通过视图啊,也就视图,然后呢,去收集用户输入的一些数据,然后把这些数据呢,然后提交到服务器中,然后在服务器中获取完之后传输到service处理业务逻辑,再传输到DA在do的实现类中,咱们要把这些数据啊给拼接到我们的SQ尾去中,然后最终呢执行SQ去,那这个时候就可以把咱们用户相关的一些数据啊保存到数据库里面了,好,所以说咱们以后很少会有SQ啊,是写死的。对吧,咱们经常见的一个写死的circle,就是select新from表明,但是当我们去做增删改的时候,或者说咱们来查询指定数据的时候,或者说是多条件查询的时候,那我们当前咱们的数据基本上都是浏览器传输过来的,然后呢,咱们需要把它动态的去拼接到我们的SQL语句中,然后这个时候才能实现咱们最终的效果。
01:11
好,然后呢,我们之前咱们在JDBC的时候,咱们是如何来实现的呢?对于这些数据,我们有两种方式把它给拼接到circle口中,首先第一种呢,就是字符串拼接的方式,第二种呢,就是占位符赋值的方式,大家还有印象吗?字符串拼接的方式呢?然后我们需要手动的去设置单引号,而咱们的占位符赋值的这种方式呀,然后我们是需要在我们的SQL语句中,咱们需要赋值的地方呢,来写上一个问号,然后再通过咱们的预编译对象中的set方法来为我们的占位符进行赋值,OK吧,是这两种方式,而我们常用的就是占位符赋值,为什么?因为占位符赋值要比字符串拼接要简单一些,首先这个单引号咱们不需要自己去加,然后它会自动去添加单引号,然后还有一个问题,就是咱们的这个占位符赋值能够避免什么呀,避免circle口注入的情况,OK吧,这样的啊好,然后呢,买be它在获取。
02:11
参数值的时候为我们提供了两种方式,那my be又是如何获取参数值的呢?大家注意,因为my be现在咱们用的是么?变相接口编程,大家会发现咱们原来写的是dau,但是我们现在创建的是map接口,而且有实现类吗?没有实现类,咱们从代码的角度上来说,就是说我们当前去调用map接口中的一个方法,而这个方法呢,它是有参数的,然后我们现在因为没有实现类,所以说我们这个map接口中的方法直接对应的就是我们映射文件中的一个SQL语句,所以说我们现在这个circleql语句是写在映射文件中的,那我们要做的事情就是在映射文件中,然后通过指定的方式来获取咱们所对应的这个方法的参数,这个大家注意,然后把它给拼接到咱们的SQL语句中。
03:05
是这样的啊,好,然后所以说呢,买倍体子就给我们提供了两种方式呀,哪两种方式呢,大家注意,一种是井号大括号,一种是dollarta大括号,比如说我们在这咱们可以先给大家创建一个啊,然后比如说要我们先来写咱们的第一个例子,我们要干什么呢?咱们根据用户名,然后来查询一个用户信息,可不可以根据用户名来查询一个用户信息,比如说用户名如果咱们是唯一的,那它的返回值就是U的方法名,咱们就叫做get user by username OK,那这个括号里面咱们传进来的是不是应该就是一个string类型的user?内幕。这个大家能看懂吧,咱们的这个方法它是有需求的啊,Get user by username,大家想一下这个功能什么时候会用啊,比如说我们在进行注册的时候,我们是不是要根据用户名在数据库里面去查询,查询当前的用户名是否已经被注册,如果已经被注册,那咱们用不了,如果没有被注册,那咱们就可以接着使用,对不对,这样的啊好,那下面呢,咱们把注释给写上干啥的,叫做根据用户名来查询用户信息,对吧?然后我们现在咱们把这个方法找到我们所对应的映射文件,然后咱们把这个SQL语句啊,给它写出来,Select的ID要跟方法名一致,然后我们当前咱们必须要设置一个read type type叫做结果映射,那怎么去写呀?大家想想,咱们在核心配置文件中设置的是不是有类型别名啊,对不对,那所以说我们当前是不是在映射文件中直接用它的类名就可以来表。
04:47
表示我们当前一个具体的类型,OK吧,好,再往下怎么写,非常简单,Select的星,然后from,表明T_user,然后while username,等于好,问题来了。
05:03
大家说我们现在要干什么,我们当前咱们的这个方法,然后对应的是我们映射文件中的这个SQ语句,咱们从代码的层面来说,其实我要做的事情就是通过指定的方式来获取我们当前map接口的方法中的这个参数,然后把它放在这个位置,那这个时候我们该如何去做呢?大家注意啊,然后我们现在呢,买杯体为我们提供的是两种方式,咱们刚才也说了,井号大括号和dollarta大括号,这两种方式呀,它都可以,大家注意它都可以啊,好,然后呢,这两种方式有什么区别呢?它Dollar大括号它的本质其实就是字符串拼接,井号大括号的本质其实就是占位符赋持,其实就跟我们之前GDBC里面最原始的拼接S口的方式是一样的,然后这两种正好对应的就是字符串拼接和占位数赋值的方式,那所以说它们两个的区别就不用再跟大家说了吧,是不是跟我们字符串拼。
06:04
分接和站位和赋值的区别是一样的,它需要手动加单引号,然后它然后呢,是不是可以自动加单引号,然后咱们的Dollar大括号呢?然后它会造成circleq注入,而井号大括号它可以避免circleq注入,OK吧,哎,这个大家一定要看好啊,行,然后那这两个东西具体该如何来使用呢?然后下面咱们就来看一下咱们的各种情况,因为当我们的map接口中的方法的参数个数类型不一样的时候,我们当前获取参数值它的使用方式也是不一样的,OK。
我来说两句