Tag: mybatis

获取mybatis中最后插入记录的ID

我是mybatis的新手。 我想获取最后插入记录的ID。 我的数据库是mysql,我的mapper xml是 SELECT LAST_INSERT_ID() as id insert into fileAttachment name, size, #{name,jdbcType=VARCHAR}, #{attachmentFileSize,jdbcType=INTEGER}, 我认为这里写的语句’SELECT LAST_INSERT_ID()as id’应该返回最后插入记录的id但是我在插入记录后总是1。 我的mapper.java类我有方法 int insertSelective(FileAttachment record); 在我正在使用的dao课程中 int id = fileAttachmentMapper.insertSelective(fileAttachment); 插入新记录时,我的ID值始终为1。 我的Id字段自动递增,记录正确插入。

MyBatis一次执行多个sql语句,这可能吗?

我想知道是否有可能在1 go中执行多个sql语句。 例如,我想从多个表中删除行的场景,有没有办法可以做的事情,比如… DELETE FROM DUMMYTABLE_A where X=${value} DELETE FROM DUMMYTABLE_B where X=${value}

在mybatis中返回HashMap并将其用作spring MVC中的ModelAttribute

我想使用spring mvc @modelAttribute在我的Jsp页面中显示类别列表。 在我的mapper.xml文件中 select id, name from categories 在我的Mapper.java类中,我有方法 List<Map> selectAllCategories(); 我想要一个像这样的方法: Map`selectAllCategories(); 而不是List<Map> ,这可能吗?

如何在MyBatis foreach中迭代HashMap?

我正在尝试在mybatis中生成如下所示的sql。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in ( (‘kp’,’kar’),(‘srt’,’sach’)); 我的输入参数类型是HashMap。 现在如何从mapper xml文件生成SQL。 下面的代码抛出exception,说map被评估为null。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item},#{item.get(item)} 另一种方法是创建一个具有键值字段的类,创建一个对象列表,然后将parameterType作为list传递,如下所示。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item.getKey()},#{item.getVal()} 但有没有办法让我的mapper工作第一种方法? 除了将查询更改为union之外

如何使用MyBatis / Spring实现批处理操作?

我想知道如何使用MyBatis 3和Spring 3使用insert语句实现批处理操作? 例如,以下是目前正在进行的操作: spring.xml: ${context.factory} MyService.xml: insert into … // code removed MyService.java: public interface MyService { public void insertMyRecord (MyRecord); } MyController.java: @Controller public class MyController { @Autowired private MyService myService; @Transactional @RequestMapping( …. ) public void bulkUpload (@RequestBody List myRecords) { for (MyRecord record : myRecords) { myService.insertMyRecord(record); } } } 免责声明:这只是用于演示目的的伪代码 […]

如何使用带有iBatis(myBatis)的注释进行IN查询?

我们只想使用MyBatis的注释; 我们真的想避免使用xml。 我们正在尝试使用“IN”子句: @Select(“SELECT * FROM blog WHERE id IN (#{ids})”) List selectBlogs(int[] ids); MyBatis似乎无法选择整数数组并将其放入生成的查询中。 似乎“软弱地失败”,我们得不到任何结果。 看起来我们可以使用XML映射来实现这一点,但我们真的想避免这种情况。 是否有正确的注释语法?

MyBatis批量插入/更新Oracle

我最近开始学习使用myBatis。我现在面临这样的情况,我需要不断通过WebService获取一个新的Objects列表,然后对于这个列表,我需要通过oracle DB表插入/更新每个对象MyBatis的。 棘手的部分是,我不能简单地每次都进行批量插入,因为某些对象可能已经存在于DB中,对于这些记录,我需要更新它们的字段而不是新的插入。 我当前的解决方案可能非常愚蠢,使用Java,从webservice构建Object列表,循环遍历每个,执行myBatis选择,如果它不是null(已经存在于db中),则执行myBatis更新; 否则,为这个新对象执行myBatis插入。 function实现。 但我的技术负责人表示它效率非常低,因为使用Java进行for循环并逐个插入/更新将消耗大量系统资源。 他建议我通过传递一个对象列表来使用myBatis进行批量插入。 然而,myBatis中的批量插入很简单,因为我不是纯粹插入(对于我需要更新的现有记录),我不认为批量插入在这里是合适的。 我已经google了一段时间,并意识到我可能需要使用“merge”而不是“insert”(对于Oracle)。 我在myBatis中搜索合并的示例仅适用于一个对象,而不是批处理。 因此,我想知道专家是否可以提供一些关于如何在MyBatis中进行批量合并的例子(编写Mapper的正确方法)?