如何在MyBatis的mapper.xml中sql语句实现批量新增以及更新操作?
2020-07-12 17:09
671 查看
我这里建立了一个vo类,继承了书本类(里面可以写你自己需要的东西,很方便)
// 这里用来注解,所以没有get和set以及toString @Data public class BookVo extends Book { private List<Book> books; }
然后再就是接口里面的方法的定义
/** * 批量新增书本 * @param bookVo * @return */ int addBatchBooks(BookVo bookVo); //批量更新 int updateBatchBookS(BookVo bookVo);
mapper.xml里面sql语句的编写
<!--批量新增--> <insert id="addBatchBooks" parameterType="com.zking.mybatis01.vo.BookVo"> insert into t_book (bookname,price,booktype,bookimage) <!-- 1.collection:配遍历的集合 2.open:开始位置 3.close:结束位置 4.separator:分符号 5.item:遍历的子项 6.index:索引 这个也是一种方式也可以用: foreach(int i in lst) <foreach collection="books" item="b" open=" values(" close=")" separator="),("> #{b.bookname},#{b.price},#{b.booktype},#{b.bookimage} </foreach> --> <foreach collection="books" item="b" open=" values" separator="," > (#{b.bookname},#{b.price},#{b.booktype},#{b.bookimage}) </foreach> </insert> <!--批量更新--> <update id="updateBatchBookS" parameterType="com.zking.mybatis01.vo.BookVo"> <foreach collection="books" item="b" separator=";"> update t_book <set > <if test="b.bookname != null" > bookname = #{b.bookname}, </if> <if test="b.price != null" > price = #{b.price}, </if> <if test="b.booktype != null" > booktype = #{b.booktype}, </if> <if test="b.bookimage != null" > bookimage = #{b.bookimage}, </if> </set> where id = #{b.id} </foreach> </update>
Junit测试类里面方法的运行
public class BookServicesImplTest { private IBookServices bookService; private SqlSession sqlSession; private Book book; @Before public void setUp() throws Exception { sqlSession = MybatisSessionFactoryUtils.openSession(); BookMapper bookMapper = sqlSession.getMapper(BookMapper.class); BookServicesImpl bookServiesImpl=new BookServicesImpl(); bookServiesImpl.setBookMapper(bookMapper); this.bookService=bookServiesImpl; book = new Book(); } @After public void tearDown() throws Exception { sqlSession.commit(); MybatisSessionFactoryUtils.closeSession(); } @Test public void Test(){ //批量新增 BookVo bv=new BookVo(); List<Book> bookList=new ArrayList<Book>(); for (int i = 0; i <5; i++) { Book b=new Book(); b.setBookname("德鲁纳酒店"+i+"集"); b.setPrice(128f); b.setBooktype("爱情玄幻"); b.setBookimage("dlnjd.jpg"); bookList.add(b); } bv.setBooks(bookList); bookService.addBatchBooks(bv); //批量修改 /*BookVo bv=new BookVo(); List<Book> bookList=new ArrayList<Book>(); for (int i = 0; i <5; i++) { Book b=new Book(); b.setId(i); b.setBookname("魔道祖师"+i+"集"); b.setPrice(128f); b.setBooktype("修仙玄幻"); b.setBookimage("mdzs.jpg"); bookList.add(b); } bv.setBooks(bookList); bookService.updateBatchBookS(bv);*/ /* book.setId(1); Book b = bookService.getBookByChoose(book); System.out.println(b);*/ } }
- 如果运行之后控制台的进度条是绿色就代表成功了,!!!注意:有些表的id是自增长的话,SQL语句哪里id就要去掉,不然会报错*
相关文章推荐
- mybatis如何实现批量更新和插入新增实例详解(附SQL以及mapper配置)
- mybatis中sql语句where子句中使用in实现批量操作
- spring+mybatis一个方法执行多条更新语句,实现批量DML
- 列表上移下移的SQL语句(mybatis mapper.xml写法)
- 要求:把“内容”中与 ”标题“一样的文字批量删除了,如何用sql语句实现
- mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql
- 如何用SQL语句实现精确搜索以及模糊搜索
- MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- 传值设置mybatis查询的 列名(字段名),以及如何查看mybatis中执行的SQL语句
- 动态组合SQL语句方式实现批量更新的实例
- 动态组合SQL语句方式实现批量更新的实例
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- 如何用SQL语句实现精确搜索以及模糊搜索
- 如何通过mybatis逆向工程生成实体类以及dao和mapper.xml
- Mybatis SQL语句的两种映射方式 mapper的xml配置和接口两种方式
- Mybatis的oracle的经典SQL语句(分页-新增的id自增-批量新增-动态修改-union all)
- IT SQL:足迹第十四步了解大数据(如何在mapper包下XML文件中书写SQL语句)
- Mybatis 添加语句以及批量操作