mybatis配置文件总结,解决文件配置困惑

2020-05-17 20:19:20 java常见问答 7606

大家对mybatis有所了解吧,今天给大家来总结mybatis的有关配置的知识,接下来让我们了解下吧。

讲到mybatis,肯定是从映射文件进行讲解

在mapper.xml文件中配置很多的SQL语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句

Statement的实际位置就等于namespace+StatementId

Mybatis中占位符,#和$有何区别呢?

在Mybatis中,有两种占位符

#{}解析传递进来的参数数据

${}对传递进来的参数原样拼接在SQL中

主键如何生成策略

如果我们在Hibernate中,当我们插入数据的时候,我们是可以选择是UUID策略

那么在Mybatis是怎么做的呢?

<insertid=”insertUser” parameterType=”con.itcast.mybatis.po.User”>
<selectKey KeyProperty=”id” order=”BEFORE” resultType=”string”>select uuid()</selectKey>
INSERT INTO USER(id, username, birthday, sex, address) VALUES(#
    {
        id
    }, #
    {
        username
    }, #
    {
        birthday
    }, #
    {
        sex
    }, #
    {
        address
    }) <
    /insert>

主键返回

如果我们一般插入数据的话,如果我们想要知道刚刚插入的数据的主键是多少,我们可以通过以下的方式来获取

需求:

user对象插入到数据库后,新记录的主键要通过user对象返回,通过user获取主键值。

解决思路:

通过LAST_INSERT_ID()获取刚插入记录的自增主键值,在insert语句执行后,执行select LAST_INSERT_ID()就可以获取自增主键。

mysql:

<insertid=”insertUser” parameterType=”con.itcast.mybatis.po.User”>
<selectKey KeyProperty=”id” order=”BEFORE” resultType=”string”>select LAST_INSERT_ID()</selectKey>
INSERT INTO USER(id, username, birthday, sex, address) VALUES(#
    {
        id
    }, #
    {
        username
    }, #
    {
        birthday
    }, #
    {
        sex
    }, #
    {
        address
    }) <
    /insert>

resultMap和resultType区别

resultType :指定输出结果的类型(pojo、简单类型、hashmap..),将sql查询结果映射为java对象 。

使用resultType注意:sql查询的列名要和resultType指定pojo的属性名相同,指定相同 属性方可映射成功,如果sql查询的列名要和resultType指定pojo的属性名全部不相同,list中无法创建pojo对象的。

resultMap:将sql查询结果映射为java对象。

如果sql查询列名和最终要映射的pojo的属性名不一致,使用resultMap将列名和pojo的属性名做一个对应关系 (列名和属性名映射配置)

resultType和resultMap用法总结

resultType:

作用:

将查询结果按照sql列名pojo属性名一致性映射到pojo中。

场合:

常见一些明细记录的展示,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。

resultMap:

使用association和collection完成一对一和一对多高级映射。

以上就是今天所讲的内容,想要了解更多java常见问答知识,请继续关注本网站。

推荐文章:

mybatis多对多映射关系,详细讲解 

mybatis优缺点是什么?有哪些优点和缺点?

mybatis和hibernate的区别是什么?有什么区别?