• MyBatis映射文件的基本功能


    #{}与${}区别

    1. “#{}”使用的是preparedStatement方式预处理,就是使用了占位符来填充数据防止SQL注入.

    2. ${}使用的是statement方式进行sql语句的拼接操作,有SQL注入风险。

    映射文件配置:

        <delete id="delete" parameterType="int">
    		delete from t_user where no = #{no} 
    	</delete>
    	
    	<delete id="deleteById" parameterType="int">
    		delete from t_user where no = ${no} 
    	</delete>
    

    测试代码:

    @Test
    	public void test2() {
    		int add = mapper.delete(1010);
    		System.out.println("删除了"+add+"条信息");
    	}
    	
    	@Test
    	public void test3() {
    		int add = mapper.deleteById(1111);
    		System.out.println("删除了"+add+"条信息");
    	}
    

    测试结果:
    在这里插入图片描述
    3. ${}使用时必须在接口的参数上面使用注解@Parma("参数名")来定义参数,否则会报错。

    resultType与resultMap区别

    1. resultType用来设置SQL事务操作返回的数据是什么类型的。(一般用在单表处理中)

    2. resultMap基本功能在resultType的基础上增加了返回类型数据名称的别名设置,就是针对,引用类型的成员名称与数据库表单的数据名称不一致的情况。(一般使用在多表联级查处理中)

    映射文件设置

    <resultMap type="user" id="baseMap">
    		<!-- 通常使用在多级联表查询中,由于表中的属性
    			  名与后端对应类的成员名称对不上,所以可以
    			  在此处定义成员变量的别名使查询结果一一对
    			  应,方便数据接收 -->
      		<!-- 表结构中的column和对象中成员变量对应关系 -->
      		<id column="no" property="no"/>
      		<result column="name" property="xxxname"/>
      		<result column="age" property="age"/>
      	</resultMap>
      	
      	<!-- 
      		resultType一般用在单表处理中 
      		resultMap 一般使用在多表中
      	-->
      	<select id="query" resultMap="baseMap">
    		select * from t_user 
    	</select>
    	<select id="queryById" resultType="user" parameterType="int">
    		select * 
    		from t_user 
    		where no=#{id}
    	</select>
    

    查询测试,已经提前将User类中的name成员名改成了xxxname,与数据库中的name不一致:

    @Test
    	public void test() {
    		List<User> list = mapper.query();
    		for (User user : list) {
    			System.err.println("使用了resultMap"+user);
    		}
    		User byId = mapper.queryById(1111);
    		System.err.println("使用了resultType"+byId);
    	}
    

    查询结果,可以看到没有设置成员别名的成员值是NULL:
    在这里插入图片描述

  • 相关阅读:
    HDU 2066 一个人的旅行 最短路问题
    HDU 2112 HDU Today 最短路
    HDU 2521 反素数 模拟题
    mac 安装 office
    selenium用法 (python)
    selenium遇到不可编辑input和隐藏input如何赋值
    mac 下bash命令
    ssh 自动登录
    linux常用命令
    json字符串调整
  • 原文地址:https://www.cnblogs.com/xj619/p/11178611.html
Copyright © 2020-2023  润新知