Mybatis【配置文件】(一)

简介: 配置文件和映射文件还有挺多的属性我还没有讲的,现在就把它们一一补全在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句Statement的实际位置就等于namespace+StatementId

映射文件

配置文件和映射文件还有挺多的属性我还没有讲的,现在就把它们一一补全

在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句

Statement的实际位置就等于namespace+StatementId

占位符

在Mybatis中,有两种占位符

  • #{}解析传递进来的参数数据
  • ${}对传递进来的参数原样拼接在SQL中

主键生成策略

如果我们在Hibernate中,当我们插入数据的时候,我们是可以选择是UUID策略的…

那么在Mybatis是怎么做的呢??

UUID

<!-- mysql的uuid生成主键 -->
    <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
        <selectKey keyProperty="id" order="BEFORE" resultType="string">
            select uuid()
        </selectKey>
        INSERT INTO USER(id,username,birthday,sex,address) VALUES(#{id},#{username},#{birthday},#{sex},#{address})
    </insert>

主键返回

如果我们一般插入数据的话,如果我们想要知道刚刚插入的数据的主键是多少,我们可以通过以下的方式来获取

需求:

  • user对象插入到数据库后,新记录的主键要通过user对象返回,通过user获取主键值。

解决思路:

  • 通过LAST_INSERT_ID()获取刚插入记录的自增主键值,在insert语句执行后,执行select LAST_INSERT_ID()就可以获取自增主键。

mysql:

<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
        <selectKey keyProperty="id" order="AFTER" resultType="int">
            select LAST_INSERT_ID()
        </selectKey>
        INSERT INTO USER(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address})
    </insert>

oracle:

实现思路:

  • 先查询序列得到主键,将主键设置到user对象中,将user对象插入数据库。
<!-- oracle
    在执行insert之前执行select 序列.nextval() from dual取出序列最大值,将值设置到user对象 的id属性
     -->
    <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
        <selectKey keyProperty="id" order="BEFORE" resultType="int">
            select 序列.nextval() from dual
        </selectKey>
        INSERT INTO USER(id,username,birthday,sex,address) VALUES( 序列.nextval(),#{username},#{birthday},#{sex},#{address})
    </insert>

resultMap

有的时候,我们看别的映射文件,可能看不到以下这么一段代码:

<resultMap id="userListResultMap" type="user" >
         <!-- 列名
         id_,username_,birthday_
         id:要映射结果集的唯 一标识 ,称为主键
         column:结果集的列名
         property:type指定的哪个属性中
          -->
          <id column="id_" property="id"/>
          <!-- result就是普通列的映射配置 -->
          <result column="username_" property="username"/>
          <result column="birthday_" property="birthday"/>
     </resultMap>

因为,如果我们的数据表的字段和JavaBean的属性名称是相同时,我们就不用上面那段代码了。Mybatis会自动帮我们把返回的结果进行封装成JavaBean

那当我们数据表的字段和JavaBean的属性名称不是相同时,我们就需要使用resultMap,也就是上面那段代码

  • 当然了,在正常情况下列名和JavaBean的属性名一般都是不同的,因此还是需要resultMap的。

resultMap和resultType区别

resultType :指定输出结果的类型(pojo、简单类型、hashmap..),将sql查询结果映射为java对象 。

  • 使用resultType注意:sql查询的列名要和resultType指定pojo的属性名相同,指定相同 属性方可映射成功,如果sql查询的列名要和resultType指定pojo的属性名全部不相同,list中无法创建pojo对象的。

resultMap:将sql查询结果映射为java对象。

  • 如果sql查询列名和最终要映射的pojo的属性名不一致,使用resultMap将列名和pojo的属性名做一个对应关系 (列名和属性名映射配置)

使用resultMap

<resultMap id="userListResultMap" type="user" >
         <!-- 列名
         id_,username_,birthday_
         id:要映射结果集的唯 一标识 ,称为主键
         column:结果集的列名
         property:type指定的哪个属性中
          -->
          <id column="id_" property="id"/>
          <!-- result就是普通列的映射配置 -->
          <result column="username_" property="username"/>
          <result column="birthday_" property="birthday"/>
     </resultMap>

微信图片_20220411182207.png

微信图片_20220411182219.png


目录
相关文章
|
1月前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
15 1
|
3月前
|
SQL Java 数据库连接
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
|
3月前
|
SQL Java 数据库连接
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
62 2
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
|
7月前
|
XML Java 数据库连接
(精)SSM框架整合的配置文件(spring+spring MVC+mybatis)
(精)SSM框架整合的配置文件(spring+spring MVC+mybatis)
59 0
|
1月前
|
缓存 Java 数据库连接
【MyBatis】主配置文件
【MyBatis】主配置文件
27 0
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
203 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
1月前
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
51 0
|
5天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
3月前
|
Java 数据库连接 mybatis
MyBatis核心配置文件深入
MyBatis核心配置文件深入
47 0