allowMultiQueries 执行多条SQL语句
2017-11-30 20:58
471 查看
allowMultiQueries
在使用Mybatis时,写数据操作的方法时,一般为执行一条SQL语句,如下面代码所示为,Category数据表对应的数据增删改查方法。<insert id="addCategory" parameterType="Category"> insert into category_ ( name ) values (#{name}) </insert> <delete id="deleteCategory" > delete from category_ where id=#{id}; </delete> <select id="getCategory" parameterType="_int" resultType="Category"> select * from category_ where id=#{id} </select> <update id="updateCategory" parameterType="Category"> update category_ set name=#{name} where id=#{id} </update> <select id="listCategory" resultType="Category"> select * from category_ </select>但在一对多,多对一的情况下,存在一些问题。如:一个Category对应多个Product,当你删除Category时,同时也需要删除其包含的Product。如图下图所示,Product表中的cid外键映射Category表中的id。当我们删除category 1这一行数据时,希望同时也删除其对应的product a和product b。
因此,执行一个删除方法时,要对Category和Product两个表删除数据,执行两条SQL语句。如下代码所示,这两条删除语句的顺序也是很有讲究的,如果你添加了外键关系,那么先要删除外键中的数据,后删除主键中的数据。因为,主键被其他外键所引用时是无法删除的。这里,我们先执行product表中的删除,后执行category表中的删除:
<delete id="deleteCategory" > delete from product_ where cid=#{id}; delete from category_ where id=#{id}; </delete>当同时执行多条SQL语句的时候,需要在Mybatis配置文件中进行allowMultiQueries配置:
<property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8&allowMultiQueries=true"/>
相关文章推荐
- 关于mysql 执行批量的sql 语句问题:&allowMultiQueries=true
- mybits 动态sql 批量操作报错 关于allowMultiQueries
- Druid执行多条SQL异常:Cause: java.sql.SQLException: sql injection violation, multi-statement not allow
- MySQL同时执行多条SQL语句解决办法
- SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它
- 应用Druid监控SQL语句的执行情况
- 使用Job的SQL语句为多个Job调度执行顺序(转)
- sql语句的执行顺序
- 在mybatis执行SQL语句之前进行拦击处理
- Linux下用freetds执行SQL Server的sql语句和存储过程
- SQL逻辑查询语句执行顺序
- hibernate执行的SQL语句返回的list集合用Object[]接收遍历
- SQL语句的优先级(执行顺序)
- SQL语句执行顺寻
- qtp执行文本中的sql语句/脚本
- MySQL中执行sql语句反斜杠需要进行转义
- 步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除
- C#执行sql语句抛出“标准表达式中数据类型不匹配”
- SQL语句执行效率及分析(note)
- 在 MySQL 数据库中使用 C 执行 SQL 语句