mybatis delete语句,mybatis同时执行delete和insert

  mybatis delete语句,mybatis同时执行delete和insert

  

目录

下面我将演示如何使用动态语句批量删除数据库数据下面是项目的结构1、IEmpDAO.java为接口提供批量删除数据方法2、EmpDAOImpl.java为接口的实现类3、MybatisSqlSessionFactory.java4、Emp.java为实体类Emp.xml为映射文件6、mybatis_cfg.xml为框架主配置文件7、pom.xml为专家引入依赖的文件8、Test.java为测试类

 

  

下面我将演示如何使用动态语句批量删除数据库数据

本人在数据库建了一张电磁脉冲员工表(表的数据自己填充),表的结构如下:

 

  批量删除的核心代码为,在实体映射文件中配置如下的代码:

  !-批量删除-delete id= deletemore EMP 参数type= int[]!-从电磁脉冲中删除empno in(7789,7790) -!- forEach :用来循环集合:用来指定循环的数据的类型可以填的值有:数组,列表,映射项目:循环中为每个循环的数据指定一个别名索引:循环中循环的下标打开:开始关闭:结束分离器:数组中元素之间的分隔符-delete from EMP where empno infor for each collection= arr item= arr index= no open=( separator=, close=)#{arr}/foreach/delete

  

下面是项目的结构

本人使用的是maven搭建的web项目

 

  IEmpDAO.java为接口提供批量删除数据方法,EmpDAOImpl.java为接口的实现类,MybatisSqlSessionFactory.java为本人创建的获取使用的工具类,Emp.java为实体类,Emp.xml为映射文件,mybatis_cfg.xml为框架主配置文件,Test.java为测试类,pom.xml为专家引入依赖的文件。

  

1、IEmpDAO.java为接口提供批量删除数据方法

/** * 批量删除* * @ param arr * @ return */public boolean doRemoveeMore(int[]arr);

 

  

2、EmpDAOImpl.java为接口的实现类

public boolean doRemoveeMore(int[]arr){ SQL session SQL session=null;请尝试{ SQL session=mybatissqlsessionfactory。get MySQL session();int result=SQL会话。删除( cn。SZ。hcq。POJO。电磁脉冲。deletemore EMP ,arr);SQL会话。commit();返回结果0?真:假;} catch(Exception e){ e . printstacktrace();SQL会话。roll back();}最后是{ mybatissqlsessionfactory。close SQL session();}返回false}

 

  

3、MybatisSqlSessionFactory.java

为本人创建的获取使用的工具类

 

  包cn。SZ。hcq。工厂;导入Java。io。io异常;导入Java。io。读者;导入org。阿帕奇。伊巴提斯。io。资源;导入org。阿帕奇。伊巴提斯。会话。SQL会话;导入org。阿帕奇。伊巴提斯。会话。SQL会话工厂;导入org。阿帕奇。伊巴提斯。会话。sqlsessionfactorybuilder公共类地中海游艇经纪人协会

  tisSqlSessionFactory {// 配置文件private static final String RESOURCE = "mybatis_cfg.xml";private static Reader reader = null;private static SqlSessionFactoryBuilder builder = null;private static SqlSessionFactory factory = null;// 可以在同一个线程范围内,共享一个对象private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); // 静态代码块(类加载的时候执行一次)static {try {reader = Resources.getResourceAsReader(RESOURCE);builder = new SqlSessionFactoryBuilder();factory = builder.build(reader);} catch (IOException e) {e.printStackTrace();}} public static SqlSession getMySqlSession() {// 从本地线程中获取session连接SqlSession sqlSession = threadLocal.get();// 连接为空则创建连接,并将该连接添加到本地线程中去if (sqlSession == null) {if (factory == null) {rebuildFactory();}sqlSession = factory.openSession();}threadLocal.set(sqlSession);return sqlSession;} // 创建工厂public static void rebuildFactory() {try {reader = Resources.getResourceAsReader(RESOURCE);builder = new SqlSessionFactoryBuilder();factory = builder.build(reader);} catch (IOException e) {e.printStackTrace();}} // 关闭连接public static void closeSqlSession() {SqlSession sqlSession = threadLocal.get();if (sqlSession != null) {// 关闭sessionsqlSession.close();}// 同时将本地线程中置为null(防止用户再次调用时出现空的session)threadLocal.set(null);} }

 

  

4、Emp.java为实体类

public class Emp implements Serializable {private Integer empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Double sal;private Double comm;private Integer deptno; public Integer getEmpno() {return empno;} public void setEmpno(Integer empno) {this.empno = empno;} public String getEname() {return ename;} public void setEname(String ename) {this.ename = ename;} public String getJob() {return job;} public void setJob(String job) {this.job = job;} public Integer getMgr() {return mgr;} public void setMgr(Integer mgr) {this.mgr = mgr;} public Date getHiredate() {return hiredate;} public void setHiredate(Date hiredate) {this.hiredate = hiredate;} public Double getSal() {return sal;} public void setSal(Double sal) {this.sal = sal;} public Double getComm() {return comm;} public void setComm(Double comm) {this.comm = comm;} public Integer getDeptno() {return deptno;} public void setDeptno(Integer deptno) {this.deptno = deptno;} }

 

  

5、Emp.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="cn.sz.hcq.pojo.Emp"><!-- 批量删除 --><delete id="deleteMoreEmp" parameterType="int[]"><!-- delete from emp where empno in(7789,7790) --><!-- forEach : 用来循环 collection : 用来指定循环的数据的类型 可以填的值有:array,list,map item : 循环中为每个循环的数据指定一个别名 index : 循环中循环的下标 open : 开始 close : 结束 separator : 数组中元素之间的分隔符 -->delete from emp where empno in<foreach collection="array" item="arr" index="no" open="("separator="," close=")">#{arr}</foreach></delete></mapper>

 

  

6、mybatis_cfg.xml为mybatis主配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--数据源 --><environments default="myconn"><environment id="myconn"><!--事务管理方式 --><transactionManager type="JDBC"></transactionManager><!--数据库连接参数 --><dataSource type="POOLED"><!-- type:数据源连接的方式 ,POOLED:连接池方式, UNPOOLED: 非连接池的方式 ,JNDI:java命名与目录接口方式 --><property name="driver" value="org.gjt.mm.mysql.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/db"></property><property name="username" value="root"></property><property name="password" value="root"></property></dataSource></environment></environments> <!-- 引入实体映射文件 --><mappers><mapper resource="cn/sz/hcq/pojo/Emp.xml" /></mappers><!-- 配置的参数 --></configuration>

 

  

7、pom.xml为maven引入依赖的文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.sz.hcq.pro</groupId><artifactId>Mybatis_04</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.3</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.39</version></dependency></dependencies></project>

 

  

8、Test.java为测试类

public class Test {public static void main(String[] args) {IEmpDAO empDAO = new EmpDAOImpl();System.out.println("----------批量删除----------");int[] arr = { 7791, 7792 };//删除的主键boolean removeeMore = empDAO.doRemoveeMore(arr);System.out.println("批量删除的结果:" + removeeMore);}}

完成代码后,运行测试类就可以完成批量删除。

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: