配置文件的一些元素

子元素由上到下进行配置在这里插入图片描述
元素用于映射查询语句,它可以帮助我们从数据库中读取数据。

select * from mybatis.user where id = #{id};
<!-- 更新信息 -->
    <update id="updateUser" parameterType="com.harry.pojo.User"
            flushCache="true" statementType="PREPARED"  timeout="20">
        update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id};
    </update>
​
​
<!-- 删除信息 -->
    <delete id="deleteUser" parameterType="int"
            flushCache="true" statementType="PREPARED"  timeout="20">
        delete from mybatis.user where id = #{id};
    </delete>

元素中,还有其他一些可以配置的属性:

属性说明
id表示命名空间中的唯一标识符,常与命名空间组合起来使用。组合后如果不唯一,MyBatis 会抛出异常
parameterType该属性表示传入SQL语句的参数类的全限定名或者别名。它是一个可选属性,因为MyBatis可以通过TypeHandler推断出具体传入语句的参数。其默认值是unset (依赖于驱动)
resultType从SQL语句中返回的类型的类的全限定名或者别名。如果是集合类型,那么返回的应该是集合可以包含的类型,而不是集合本身。返回时可以使用resultType或resultMap之一
resultMap表示外部resultMap的命名引用。返回时可以使用resultType或resultMap之一
resultCache表示在调用SQL语句之后,是否需要MyBatis清空之前查询的本地缓存和二级缓存。其值为布尔类型( truelfalse),默认值为false.如果设置为true,则任何时候只要SQL语句被调用,都会清空本地缓存和二级缓存
userCache用于控制二级缓存的开启和关闭。其值为布尔类型( truelalse),默认值为true, 表示将查询结果存入二级缓存中
timeout用于设置超时参数,单位为秒。超时时将抛出异常
fetchSize获取记录的总条数设定,其默认值是unset (依赖于驱动)
statementType用于设置MyBatis使用哪个JDBC的Statement工作,其值为STATEMENT、PREPARED(默认值)或CALLABLE,分别对应JDBC中的Statement、PreparedStatement 和CallableStatement
resultSetType表示结果集的类型,其值可设置为FORWARD_ ONLY、SCROLL SENSITIVE或SCROLL JINSENSITIVE,它的默认值是unset (依赖于驱动)

<insert id=“addUser” parameterType=“com.harry.pojo.User"flushCache=“true” statementType=“PREPARED” keyProperty=”“keyColumn=”" useGeneratedKeys="" timeout=“20”>
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});

属性说明
keyProperty(仅对insert和update有用)此属性的作用是将插入或更新操作时的返回值赋值给PO类的某个属性,通常会设置为主键对应的属性。如果需要设置联合主键,可以在多个值之间用逗号隔开
keyColumn(仅对insert和update有用)此属性用于设置第几列是主键,当主键列不是表中的第一-列时需要设置。在需要主键联合时,值可以用逗号隔开
useGeneratedKeys(仅对insert和update有用)此属性会使MyBatis使用JDBC

<!-- resultMap 的元素结构 -->
<resultMap id="" type="">
    <constructor>   <!-- 类在实例化时,用来注入到结果到构造方法中 -->
        <idArg/>    <!-- ID 参数;标记结果为 ID -->
        <arg/>      <!-- 注入到构造方法的一个普通结果 -->
    </constructor>
    <id/>           <!-- 用于表示哪个列是主键 -->
    <result/>       <!-- 注入到字段或JavaBean 属性的普通结果 -->
    <association property=""/>      <!-- 用于一对一关联 -->
    <collection property=""/>       <!-- 用于一对多关联 -->
    <discriminator javaType="">     <!-- 使用结果值来决定使用哪个结果映射 -->
        <case value="" />           <!-- 基于某些值得结果映射 -->
    </discriminator>
</resultMap>

在这里插入图片描述
在元素中,可以配置以下属性:

  • property:指定映射到的实体类对象属性,与字段一 一对应。
  • column:指定表中对应的字段
  • javaType:指定映射到实体对象属性的类型。
  • select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。
  • fetchType:指定在关联查询时是否启用延迟加载。fetchType 属性有两个属性值lazy 和 eager 两个属性值,默认值为lazy (即默认关联映射延迟加载)
<!--方式一:嵌套查询-->
<association property="card" column="card_id"
                 javaType="com.itheima.po.IdCard"
                 select="com.itheima.mapper.IdCarMapper.findCodeById"/>
<!--方式二:嵌套结果-->
<association property="card" javaType="com.itheima.po.IdCard">
    <id property="id" column="card_id" />
    <result property="card" column="code"/>
</association>
<!--方式一:嵌套查询-->
<collection property="ordersList" column="id"
            ofType="com.itheima.po.Orders"
            select="com.itheima.mapper.OrdersMapper.selectOrders" />
<!--方式二:嵌套结果-->
<collection property="ordersList" ofType="com.itheima.po.Orders">
    <id property="id" column="orders_id"/>
    <result property="number" column="number" />
</collection>
属性说明
driverJDBC驱动的Java类的全限定名
url数据库的URL地址
username登录数据库的用户名
password登录数据库的密码
defaultTransactionlsolationLevel默认的连接事务隔离级别

元素

  1. MyBatis框架每次创建结果对象的新实例时,都会使用一个对象工厂( ObjeclFactory)的实例来完成。
  2. MyBatis中默认的ObjectFactory的作用就是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。
  3. 通常情况下,我们使用默认的ObjectFactory即可,MyBatis 中默认的ObjectFactory 是由og,apache iatis relion.tactory.on DlbieceFctoeor来提供服务的。
  4. 大部分场景下都不用配置和修改,但如果想覆盖OpiecrFactory 的默认行为,则可以通过自定义ObieclFactoy来实现。

除了可以使用元素自定义别名外,MyBatis 框架还默认为许多常见的java类型(如数值、字符串、日期和集合等)提供了相应的类型别名,如下:

别名映射的类型
__bytebyte
__longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_boolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigde cimalBigDecimal
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值