标签: mybatis

MyBatis - 原始类型列表

这似乎让我望而却步.我知道我可以使用地图从myBatis查询中返回一组vanilla,但是如何使用一个原始类型列表呢?

例如,如果我有SQL喜欢:

select product_price from products
Run Code Online (Sandbox Code Playgroud)

这需要resultMap吗?我曾尝试使用java.util.ArrayList作为结果类型但是找不到类错误.

与此类似,如何将项列表作为参数传递给查询.

任何输入,指向文档的指针赞赏.

mybatis

6
推荐指数
1
解决办法
2万
查看次数

SELECT LAST_INSERT_ID()

有人可以解释MySQL函数LAST_INSERT_ID()的工作原理.我想在数据库中获取最后一行插入的id,但每次都得到1.

我用mybatis.

示例查询是:

<insert id="insertInto" parameterType="Something" timeout="0">
  INSERT INTO something (something) VALUES (#{something})
  <selectKey resultType="int">
    SELECT LAST_INSERT_ID()
  </selectKey>
</insert>
Run Code Online (Sandbox Code Playgroud)

码:

System.out.println("Id : " + id)
Run Code Online (Sandbox Code Playgroud)

输出:

Id : 1
Run Code Online (Sandbox Code Playgroud)

java mysql sql mybatis last-insert-id

6
推荐指数
2
解决办法
1万
查看次数

iBatis到MyBatis的迁移工作?

我在我的生产应用程序中使用iBatis-2.3.4.726.我想迁移我的生产应用程序以使用MyBatis.

迁移过程中我需要考虑哪些要点?

是否有任何配置更改或MyBatis支持iBatis配置为已弃用的命令?

ibatis mybatis

6
推荐指数
1
解决办法
1万
查看次数

Mybatis一对多集合映射始终具有一个默认实体

我想重写我们的服务以使用mybatis映射和连接来使我们的实体在数据库/ mybatis层上完整并完成.

<resultMap id="ParentMap" type="org.example.mybatis.Parent">
    <id column="id" jdbcType="VARCHAR" property="id" />
    <id column="Name" jdbcType="VARCHAR" property="name" />
    <id column="SurName" jdbcType="VARCHAR" property="surName" />

    <collection property="childs" column="ChildId"
        javaType="ArrayList" ofType="org.example.mybatis.Child"
        resultMap="org.example.ChildMap" />    
</resultMap>

<resultMap id="ChildMap" type="org.example.mybatis.Parent">

    <id column="id" jdbcType="VARCHAR" property="id" />
    <id column="Name" jdbcType="VARCHAR" property="name" />
    <id column="SurName" jdbcType="VARCHAR" property="surName" />
    <id column="Age" jdbcType="INTEGER" property="age" />
</resultMap>

<sql id="Parent_Column_List">
    p.Id, p.Name, p.SurName,
</sql>  

<sql id="Child_Column_List">
    c.Id, c.ParentId c.Name, c.SurName, c.Age
</sql>  

<select id="getParent" parameterType="java.lang.String" resultMap="ParentMap" >
    select 
    <include refid="Parent_Column_List"/>

    <include refid="Child_Column_List" />
    from Parent p …
Run Code Online (Sandbox Code Playgroud)

java sql spring mybatis

6
推荐指数
1
解决办法
4万
查看次数

Mybatis从另一个mapper.xml文件引用sql

我在一个mapper.xml文件中为一个表/对象编写了一个标准的select和resultMap,我想知道是否有一种方法可以通过关联,集合等上的"select"参数在另一个mapper.xml文件中使用这个select.

xml mapper mybatis

6
推荐指数
1
解决办法
7861
查看次数

如何配置Mybatis的logback来打印我的SQL

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{HH:mm:ss} %-5level %logger{35} - %msg%n
            </Pattern>
        </encoder>
    </appender>
    <logger name="java.sql" level="DEBUG" >
        <appender-ref ref="STDOUT" />
    </logger>
    <root>
        <level value="ERROR" />
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我只想打印sql和错误,但它不能在Console中打印SQL,任何人都可以帮助我吗?非常感谢

logback mybatis

6
推荐指数
1
解决办法
3万
查看次数

为什么接口和xml映射器文件必须在同一个包中并且具有相同的名称?

今天我正在准备一个使用Spring Boot并使用MyBatis进行Spring-MyBatis旁边的数据访问通信的示例.这是相关的项目配置(使用maven):

src/main/java
- edu.home.ltmj.controller
  + CategoryController.java
- edu.home.ltmj.dao
  + CategoryDao.java
- edu.home.ltmj.domain
  + Category.java
src/main/resources
- edu.home.ltmj.dao
  + CategoryMapper.xml
Run Code Online (Sandbox Code Playgroud)

文件的相关内容:

CategoryDao.java:

package edu.home.ltmj.dao;

public interface CategoryDao {
    List<Category> getAllCategories();
}
Run Code Online (Sandbox Code Playgroud)

CategoryMapper.xml:

<mapper namespace="edu.home.ltmj.dao.CategoryDao">
    <resultMap id="categoryMap"
        type="edu.home.ltmj.domain.Category">
        <id property="id" column="id" />
        <result property="name" column="name" />
    </resultMap>
    <select id="getAllCategories" resultMap="categoryMap">
        SELECT id, nombre
        FROM category
    </select>
</mapper>
Run Code Online (Sandbox Code Playgroud)

然后,我在请求控制器中注入一个这个dao的实例(用于测试目的),如下所示:

package edu.home.ltmj.controller;

@RestController
public class CategoryController {
    @Autowired
    private CategoryDao dao;

    @RequestMapping(value="/category/all",
        method=RequestMethod.GET,
        produces=MediaType.APPLICATION_JSON_VALUE)
    public List<Categoria> getAllCategories() {
        return dao.getAllCategories();
    }
}
Run Code Online (Sandbox Code Playgroud)

我运行我的项目并通过使用测试执行 …

java spring mybatis spring-boot spring-mybatis

6
推荐指数
1
解决办法
1万
查看次数

Mybatis可以支持将动态列映射到bean的map字段吗?

我的要求可能有点复杂.想想我有bean类:

public class A {
   private String column1;
   private String column2;
   private Map<String,String> dynamicColumns = Maps.newHashMap();
   ....
   getter&setter of column1 and column2
   ....
   public void addExtraColumnValue(String column, String value) {
     dynamicColumns.put(column, value);
   }

}
Run Code Online (Sandbox Code Playgroud)

dynamicColumns由mapper sql决定,如下所示:

<select id="queryDynamicColumns" parameterType="java.util.Map"
    resultMap="aResultMap">
         select colum1,colum2, ${dynamicColumns} from table_1
</select>
Run Code Online (Sandbox Code Playgroud)

我该如何编写这个resultMap?

我想知道mybatis可以在mapper配置中支持这种映射吗?(动态列值将放入地图.)我没有从官方网站得到一个好的答案,我也尝试拦截resultSetHandler的插件似乎通过查看DefaultResultSetHandler的源代码,它没有为我的案例提供帮助.

java sql mybatis

6
推荐指数
1
解决办法
3903
查看次数

MyBatis:将字符串映射到布尔值

我在我的数据库中插入了布尔值作为Y/N. 当我尝试将结果映射到布尔java类型时,它总是在我的pojo中将它设置为false.

有没有办法将String映射到布尔值?这是我的代码:

<resultMap id="getFlag" type="MyPojo">
    <result property="myFlag" column="MY_FLAG"/>
</resultMap>
Run Code Online (Sandbox Code Playgroud)

java mybatis

6
推荐指数
1
解决办法
5311
查看次数

事务回滚在JUnit5的@Nested类中的测试用例中不起作用

我使用spring-boot,JUnit5,Mybatis.

@SpringJUnitJupiterConfig(classes = {RepositoryTestConfig.class})
@MapperScan
@Rollback
@Transactional
public class TestClass {
    @Autowired
    private TestMapper testMapper;

    @BeforeEach
    void init() {
        User user = new User();
        testMapper.insert(user);    
    }

    @Test
    public void test1() {
        // (1) success rollback
    }

    @Nested
    class WhenExistData {
        @Test
        public void test2() {
            // (2) rollback not working
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

(1)正在回滚.并输出以下日志.

2017-05-26 22:21:29 [INFO ](TransactionContext.java:136) Rolled back transaction for test context ...
Run Code Online (Sandbox Code Playgroud)

但是,(2)不起作用.我希望能够回归@Nested.

java spring mybatis spring-boot junit5

6
推荐指数
2
解决办法
1702
查看次数