Mvaen框架& #{}与${}的区别【面试】

Mvaen框架

        #{}与${}的区别【面试】

                #{} 可以防止sql注入

                会对sql语句进行预编译|解析,传递什么参数进来,仅仅是顶替占位#{}而已一般使用的都是这个#{}

        #{}

                背后会自动的拼接上 ' '

        ${}不能防止sql注入

        不会对sql语句进行预先编译,传递什么参数进来,不会仅仅认为这数据,会和sql语句做拼接之后再解析SQL语句 ' or '1=1'

        一般比较少用这个,能使用#{}就先使用这个#{}

        ${} 不会拼接上 ' ' 所以有时候,我们需要做一些order by 这样的列名指定,需要的是准确的列名,而不是 '列名'

        如果只有一个简单参数的话,那么名字只能用${} 里面只能写value, 不能使用其他的名字一般来说,只要 #{} 能用的,基本都用它,只要它不能用的时候,再想想这个 ${}

#和$区别

        #{}表示一个占位符号

                通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 数据库 类型转换

                #{}可以有效防止 sql 注入

                #{}可以接收简单类型值或 pojo 属性值

                如果 parameterType 传输单个简单类型值(String,基本类型), #{} 括号中可以是 value 或其它名称。

        ${}表示拼接 sql 串

                通过${}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换.

                ${}不能防止 sql 注入

                ${}可以接收简单类型值或 pojo 属性值

                如果 parameterType 传输单个简单类型值.${}括号中只能是 value

parameterType:

        路径

                传递简单类型(基本数据类型)

                传递 pojo 对象: Mybatis 使用 ognl 表达式解析对象字段的值, #{}或者${}括号中的值为 pojo 属性名称。

                传递 pojo 包装对象类型 :

                        对象里面的属性是一个对象,嵌套或者是套娃的模式

                        1. 去参数的时候,使用#{对象属性名.子属性即可} :  #{user.username}

                        2. 如果内部的子属性还是一个对象,那么接着继续往下 . 即可

传递多个参数

        在方法的参数上打上注解@param

                如果方法有传递多个参数的必要,那么通常有四种写法来实现:

                        使用#{0} , #{1} , #{2} ... 来获取指定位置的参数。 0 表示第一个参数,1表示第二个参数。阅读性差。

                        使用注解@param来给参数起名字。然后在xml里面使用#{参数的别名}取值

                        可以使用一个Map集合来封装这些数据,然后传递map集合进去。直接写 #{KEY}

                        可以使用一个javaBean来包装这些数据,然后传递javabean的对象进去。 直接写 #{属性名}

传递多个参数

    1. 当传递多个参数的时候,需要给参数加上注解 @param("别名") 起别名。

    2. 在映射文件中使用 #{别名} 来取参数的值。

resultType:

        路径

        输出简单类型:

                如果返回简单的类型,那么resultType只要写这个类型即可 : 简写的别名即可

                输出pojo对象 : 直接写当前pojo类的全路径名或别名

                输出pojo列表 : 如果返回的是一个集合的类型,那么resultType写的是集合里面的元素类型可以写全路径名,也可以写别名!

        resultMap结果类型 :

                resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

                如果sql查询列名和javaBean的属性名不一致,那么数据就不能封装到对象的属性身上,要解决这个问题,有两种办法:

                a. 把查询出来的列名,给它起别名,让这个别名和我们的JavaBean的属性名一样即可!

                b. 使用resultMap来做列和属性的映射设置!

核心配置文件:

        

 

        properties 引入properties文件的

        创建properties文件

                使用 <properties resource="文件的路径"/>

                使用 ${key}来取值

        typeAliases(类型别名) (注:写在properties 标签后面,他们是同级标签)

                在Dao映射文件里面 直接写类(pojo)的名字, 不需要写类全限定名了

                typeAlizses标签下 注:只作用在映射文件中的结果和参数里面

                Package标签-----起别名,包下面的所以类

                typeAlias标签---起别名(单个取别名)

Mapper标签:

        引入Dao映射文件的

        mapper resource/class给单个映射文件登记

        package给多个即dao包下的xml映射文件登记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在IntelliJ IDEA中配置Maven,你可以按照以下步骤进行操作: 1. 打开IntelliJ IDEA,点击菜单栏中的&quot;File&quot;,然后选择&quot;Settings&quot;。 2. 在弹出的设置窗口中,选择&quot;Build, Execution, Deployment&quot;,然后选择&quot;Build Tools&quot;,再选择&quot;Maven&quot;。 3. 在&quot;Maven&quot;设置页面中,首先注意检查&quot;Maven home directory&quot;是否配置正确,确保指向你的Maven安装目录。 4. 接下来,你需要设置&quot;Maven settings file&quot;,这是一个settings.xml文件,用于配置Maven的一些参数和仓库信息。你可以点击右侧的&quot;...&quot;按钮,选择你的settings.xml文件所在的路径。 5. 最后,你还需要设置&quot;Maven local repository&quot;,这是用来存放Maven下载的依赖文件的本地仓库。同样点击右侧的&quot;...&quot;按钮,选择你希望存放本地仓库的路径。 完成以上步骤后,当你在项目中使用Maven时,它会首先在本地仓库中寻找所需的依赖,如果找不到,就会根据settings.xml文件中配置的远程仓库地址去下载。这样你就成功配置了Maven。 如果你遇到了一些问题,可以尝试以下解决方法: 1. 如果出现&quot;Invalid Maven home directory configured&quot;错误,请确保你已经正确设置了&quot;Maven home directory&quot;,并且指向了你的Maven安装目录。 2. 如果你想下载Maven依赖的速度很慢,可以尝试配置镜像下载路径。进入Maven安装目录的conf目录下,编辑settings.xml文件,在&lt;mirrors&gt;标签下添加阿里云的镜像下载路径。例如: &lt;mirror&gt; &lt;id&gt;alimaven&lt;/id&gt; &lt;name&gt;aliyun maven&lt;/name&gt; &lt;url&gt;http://maven.aliyun.com/nexus/content/groups/public/&lt;/url&gt; &lt;mirrorOf&gt;central&lt;/mirrorOf&gt; &lt;/mirror&gt; 保存文件后重启IntelliJ IDEA,下载速度应该会有所提升。 希望这些信息能帮助到你成功配置Maven。如果还有其他问题,请随时提问。&lt;span class=&quot;em&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;em&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;em&quot;&gt;3&lt;/span&gt; #### 引用[.reference_title] - *1* *2* *3* [IDEA配置MVAEN以及MAVEN下载失效问题解决](https://blog.csdn.net/An_air/article/details/104621147)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1&quot;}}] [.reference_item style=&quot;max-width: 100%&quot;] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值