mybatis的常用常用场景--insert

注意mapper接口中的每一个函数,里面的参数都要通过@Param来取别名;

注意在mybatis里面,如果是模糊查询,需要用concat来拼接字符串

<select id="selectByPointAndTitleLike" resultType="net.xdclass.online_class.domain.Video">

    select * from video where point=#{point} and title like concat('%', #{title},'%')

</select>

返回的是一个List<> ,因此在mapper层里面,方法的返回值也需要定义为List<>
 <!--下划线自动映射驼峰字段-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

配置在config.xml里面 

原理是mybatis在将数据库记录映射到类里面的时候,如果发现名称不一致,就会将_ 这种类型自动更改为大写字母,从而映射上去

里面的parameterType是指定传入参数的类型,一般在接口里面通过@Param取了别名,就不需要这个了;在参数里面的 #{Id,jdbcType=Integer} 是指定这个字段在数据库中的数据类型 

 

 insert相关语法

 语句末尾加了分号

 parameterType定义传入参数的类型,既video类,对每一个传入的参数需要用驼峰形式,同时指定其在数据库里面的数据类型;

 此时会将add方法与xml配置文件里面的sql记录对应起来,然后执行;

  • 如何获得插入的自增主键

    <insert id="add" parameterType="net.xdclass.online_class.domain.Video" useGeneratedKeys="true" keyProperty="id" keyColumn="id" >

useGeneratedKeys 指定是否使用自增主键,keyProperty java实体类里面自增主键的名称,keyColumn数据库里面的名称;

批量插入的语法:

insert into table(col1,col2) values (1,1),(2,2),(3,3)

 语句末尾不能加分号

在values后面加上foreach标签,item是list里面每一个元素的类型,separator是分隔符;

与java的for(Video video:list) 这种语法类似,对里面的传参,需要通过  video.title 这种形式去传参数。

 

调用后返回插入的行数


版权声明:本文为weixin_45063957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。