zoukankan      html  css  js  c++  java
  • Mybatis注意事项

    配置文件

    1、配置文件中<mapper>不论是parameterType属性还是resultType属性,简写的名称必须与<configuration>下<typeAliases>中的<typeAlias>里面的alias值一致。

    2、配置文件中<mapper>下的增删改查parameterType属性可以不与数据库一致,但是配置文件必须与类中属性一致。例如:数据库id字段为String,parameterType可设置为int,类中id属性必须为int。需要满足的条件是,数据库中id的String为数字,转换后不会出现异常。

    3、接口实现时,<mapper>的namespace属性必须对应接口所在位置。其余方式可不必要。

    4、配置文件中标签的先后,必须按照顺序来。

    单表:

    1、返回集合时(不论list,set,map),<select>中的resultType属性改为resultMap,同时建立对应的<resultMap><result column="列名" property="类参数名"></resultMap>。

    2、返回集合时,如果数据参数与类中参数一一对应,可设置resultType=类名,不必如第三条修改。

    3、返回集合时,如果有多参数,一是可以作为一个对象传入,二是以#{0},#{1}的方式代表第一个参数第二个参数

    1、插入数据时,<insert>标签中useGeneratedKeys属性设置为true,表示获取数据库自动生成的主键,keyProperty='id'指把获取到的主键放入id属性中。

    2、插入数据时,类中属性与数据库字段可不一一对应。sql语句中参数以类属性名为主。

    3、插入数据时,必须在执行方法后,提交事务:session.commit();否则不会被写入数据库。

    4、插入数据时,可一次插入多条数据后,再提交事务。

    5、插入数据时,insert into tablename values(#{name1},'${name2}'),以上两种参数方式都可以。注意单引号,双引号会报错。

    1、修改数据时,同类似。参数有两种方式书写。同时修改后必须提交事务,否则不会被写入数据库。

    1、删除数据时,同类似。参数有两种方式书写,同时删除后必须提交事务,否则不会被写入数据库。

    User.xml配置文件代码如下

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <!-- <mapper namespace="com.yihaomen.mybatis.models.UserMapper"> -->
    <mapper namespace="com.yihaomen.mybatis.inter.IUserOperation">
        <select id="selectUserByID" parameterType="String" resultMap="resultListUser">
            select * from lwt_goods where goodsid = #{id}
        </select>
        <resultMap type="User" id="resultListUser">
            <result column="goodsid" property="goodsid" />
            <result column="goodsname" property="goodsname" />
            <result column="storename1" property="storename" />
            <result column="oldprice" property="oldprice" />
        </resultMap>
            
        </resultMap>
        
        <insert id="addUser" parameterType="User" >
            insert into lwt_goods values(#{goodsid},#{goodsname},'null',#{storename},'${oldprice}','null',null,null,null)
        </insert>
        
        <update id="updateUser" parameterType="User">
            update lwt_goods set goodsname = #{goodsname},storename1 = #{storename} where goodsid = #{goodsid}
        </update>
        
        <delete id="deleteUser" parameterType="int">
           delete lwt_goods where goodsid = #{goodsid}
        </delete>
    </mapper>
    

    多表:

    1、多表关联查询时,需要在一个映射类A的bean里,将另一个映射类B作为它的属性。返回结果以resultMap形式表示。同时在resultMap中以<association>标签配置属性B。返回出来的结果,是A的对象,或者A的对象的集合。需要注意的是:如果返回的数据所有属性的值相同,会被合并为一条数据(暂未寻找解决方法),类似于sql中unique约束。

    方式1
        <resultMap type="ShopCar" id="resultListShopCar">
            <result column="num" property="num"/>
            <result column="type" property="type"/>
            <association property="user" javaType="User">
                <result column="goodsid" property="goodsid" />
      	        <result column="goodsname" property="goodsname" />
      		    <result column="storename1" property="storename" />
      		    <result column="oldprice" property="oldprice" />
            </association>
        </resultMap>
    方式2
        <resultMap type="User" id="resultListUser">
            <result column="goodsid" property="goodsid" />
            <result column="goodsname" property="goodsname" />
            <result column="storename1" property="storename" />
            <result column="oldprice" property="oldprice" />
        </resultMap>
        <resultMap type="ShopCar" id="resultListShopCar">
            <result column="num" property="num"/>
            <result column="type" property="type"/>
            <association property="user" javaType="User" resultMap="resultListUser"/ 
        </resultMap>
  • 相关阅读:
    如何从零开始创建一个IT信息系统
    Linux常用命令
    vue.js 3.2.20: 用rem实现移动端和pc的兼容
    vue.js3.2.6:路由处理404报错(vue-router@4.0.11)
    vue.js项目在nginx上部署:使spring后端记录真实ip地址
    vue.js 3.0.5:用vue-i18n开发i18n国际化功能(vue-i18n@9.2.0)
    前台项目基础框架之spring boot后端(spring boot v2.5.4)
    前台项目基础框架之vue前端(vue@3.2.6)
    intellij idea 2021.2:为一个spring boot项目改名
    git:修改项目的remote地址(git version 2.30.2)
  • 原文地址:https://www.cnblogs.com/yxth/p/6625926.html
Copyright © 2011-2022 走看看