mybatis方法参数是list的批量插入 |
您所在的位置:网站首页 › mybatis传入数组并且遍历 › mybatis方法参数是list的批量插入 |
要想批量插入,首先要知道forEach标签:
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。 foreach元素的属性主要有 item,index,collection,open,separator,close。 item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况: 1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list 2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array 3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map PersonDaoImpl /** * Created by 李柏霖 * 2020/10/15 11:13 */ package com.lbl.dao; import com.lbl.domain.Person; import java.util.List; public interface IPersonDao { void savePersonList(List person); } IPersonService /** * Created by 李柏霖 * 2020/10/15 11:07 */ package com.lbl.service; import com.lbl.domain.Person; import java.util.List; public interface IPersonService { void savePersonList(List person); } IPersonDao.xml insert into person(name,money) values (#{Person.name},#{Person.money})不写open="" close=""进而的参数。 在(#{Person.name},#{Person.money})参数外加上() 就可以达到(?,?),(?,?),(?,?)的效果 applicationContext.xml log4j.properties # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE # Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n # LOGFILE is set to be a File appender using a PatternLayout. log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=F:/ssmTest/log4j/ssm2.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n transactionTest /** * Created by 李柏霖 * 2020/10/16 11:22 */ package com.lbl.transaction; import com.lbl.domain.Person; import com.lbl.service.IPersonService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class transactionTest { @Autowired IPersonService service; @Test public void test03(){ List personList = new ArrayList(); personList.add(new Person("jack",100.00)); personList.add(new Person("rose",200.00)); personList.add(new Person("tony",300.00)); service.savePersonList(personList); } } sql执行结果:使用批量插入执行的SQL语句应该等价于: insert into person(name,money) values (?,?) , (?,?) , (?,?) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |