项目中常用
对于日期
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