首页 > 其他分享 >Mybatis

Mybatis

时间:2023-02-26 22:35:26浏览次数:48  
标签:name 插入 employee session emp sql Mybatis

项目中常用

对于日期

java中日期属性使用String类型也可以插入Msyql

 

打印sql语句插件

mybatis log free

需开启设置

 

 

 

 

插入

单条插入

    <insert id="createEmployee">
        insert into emploee
        values (
            null,
            #{employee.name},
            #{employee.age},
            #{employee.inductionDate},
            #{employee.quitDate},
            #{employee.identityDesc},
            #{employee.statusFlag})
    </insert>

批量插入

方式一:原生sql方式

 xml使用原生sql结合mybatis动态sql

    int batchCreateEmployee(@Param("empList") List<Employee> employees);

 

    <!--    批量插入-->
    <insert id="batchCreateEmployee">
        insert into emploee
        values
        <foreach collection="empList" item="emp" separator=",">
            (null,
             #{emp.name},
             #{emp.age},
             #{emp.inductionDate},
             #{emp.quitDate},
             #{emp.identityDesc},
             #{emp.statusFlag})
        </foreach>

sql语句过长会报错(项目中一般不超过100条),这个由数据库决定,过长时可以对list集合进行拆分,再循环调用批量插入

 

 

方式二:使用JDBC批处理

参考:https://cloud.tencent.com/developer/article/1825993

   @Autowired
    private SqlSessionFactory sqlSessionFactory;
    //批处理
    @Transactional
    public void add(List<Item> itemList) {
        SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
        ItemMapper mapper = session.getMapper(ItemMapper.class);
        for (int i = ; i < itemList.size(); i++) {
            mapper.insertSelective(itemList.get(i));
            if(i%1000==999){//每1000条提交一次防止内存溢出
                session.commit();
                session.clearCache();
            }
        }
        session.commit();
        session.clearCache();
    }

 

更新

批量更新

注意

  1.列名不加单引号,若要区分敏感字符可以加反撇号,不然会导致语法错误

  2.数据库连接要增加参数设置allowMultiQueries=true

 

 

 

jdbc:mysql://localhost/java_base?serverTimezone=GMT%2B8&characterEncoding=utf8&useUnicode=true&allowMultiQueries=true

 

 

 

    int batchUpdateEmployee(@Param("empList") List<Employee> employees);

 

    <!--    批量更新-->
    <update id="batchUpdateEmployee">
        <foreach collection="empList" item="emp" separator=";">
            update emploee
            set induction_date = #{emp.inductionDate}
            where name = #{emp.name}
        </foreach>
    </update>

 

 

标签:name,插入,employee,session,emp,sql,Mybatis
From: https://www.cnblogs.com/deity-night/p/17153671.html

相关文章