6、Mapper.xml介绍

Mapper映射文件时在实际开发过程使用最多的,也是我们学习的重点,Mapper文件中包含的元素有:
•cache – 配置给定命名空间的缓存。
•cache-ref – 从其他命名空间引用缓存配置。
•resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加 载你的对象。
•sql – 可以重用的 SQL 块,也可以被其他语句引用。
•insert – 映射插入语句
•update – 映射更新语句
•delete – 映射删除语句
•select – 映射查询语句

6.1、select元素

select :编写查询 sql 语句
id 属性:当前名称空间下的 statement 的唯一标识。必须要求 id 和 mapper 接口中的方法的名字一致。
resultType:将结果集映射为 java 的对象类型。必须(和 resultMap 二选一)
parameterType:传入参数类型。一般可以省略

6.2、insert元素

insert :里面书写 insert 语句的。 几个属性说明:
id 属性:必须的,当前名称空间下的 statement 的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的 sql 语句。insert 语句
使用#{} 去替换一个变量。
如果需要数据库影响的行数,可以直接在接口上定义返回值 integer 即可 。

获取自增的 id 的值

mapper.xml的配置

<!-- 
  	获取数据库自增长的主键值
  	keyColumn:主键列的名字
  	keyPropertity:主键的实体对应的属性名称
  	useGeneratedKeys: 使用生成主键策略
  -->
  <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyColumn="userid" keyProperty="userid">
  	insert into tb_user (userid,user_name,pwd,age,sex,birthday) 
  	values(seq_user.nextval,#{userName},#{pwd},#{age},#{sex},#{birthday})
  </insert>

java代码

@Test
public void testInsertUser() {
		Date birthday = new Date();
		User user = new User( "world", "123456", 15, "男", birthday);
		int result=-1;
		try {
			result =userMapper.insertUser(user);
			sqlsession.commit();
			System.out.println(user.getUserid());
		} catch (Exception e) {
			e.printStackTrace();
			sqlsession.rollback();
		}
		System.out.println(result);
}

6.3、update

update 的几个属性说明:
id 属性:当前名称空间下的 statement 的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的 sql 语句。
使用#{} 去替换一个变量。

6.4、delete元素

delete 的几个属性说明:
id 属性:当前名称空间下的 statement 的唯一标识(必须属性);
parameterType:传入的参数类型,可以省略。
标签内部:具体的 sql 语句。
使用#{} 去替换一个变量。

6.5、resultMap元素

ResultMap是MyBatis中最重要最强大的元素,使用ResultMap可以解决两大问题
1.POJO属性名和表结构字段名不一致的问题(当驼峰搞定不了的时候)
2.完成高级查询,比如说:一对一,一对多,多对多

表字段名不一致的解决方案总结:

1.如果是标准的驼峰命名规则可以在MyBatis配置文件中设置驼峰开启
2.使用ResultMap解决

案例:使用resultMap解决之前的属性名和字段名不一致的问题

mapper.xml的定义

  <resultMap type="User" id="UserMap" autoMapping="true">
  	<!-- 
  		id:主键
  		column:列名称
  		property::属性名
  	 -->
  	<id column="userid" property="userid"/>
  	<!-- 
  		result:其它列使用result来进行定义
  	 -->
  	<result column="user_name" property="userName"/>
  </resultMap>
  
  <select id = "queryListByTable" resultMap="UserMap">
  	select * from ${tableName}
  </select>

posted @ 2021-04-21 16:58  Mirindasky  阅读(1956)  评论(0编辑  收藏  举报