开发者社区> 问答> 正文

关于mybatis的驼峰命名的问题?报错

我们知道,通过如下配置可以启用下划线与驼峰式命名规则的映射(如first_name => firstName)

<configuration>
    <settings>
       <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

这个配置在执行查询的操作的时候很好用,可以将数据库中下划线命名的字段直接对应到JavaBean中的驼峰命名的参数里。

 

但是执行insert操作的时候问题来了,我传入的是JavaBean对象,这个时候无法将驼峰命名的参数自动转成带下划线的(大概是因为不知道往哪儿加下划线)。

比如,我预期是写成这样:

<insert id="addUser" >
		INSERT INTO user_info
			(
				user_id,
				user_name
			 )
		VALUES
			(
				#{user_id},
				#{user_name},
			)
</insert>

但是,这样会报错There is no getter for property named 'user_id' in 'class com.dx.User',因为我JavaBean中的参数名分别是userId和userName,所以我必须写成下面这样:

<insert id="addUser" >
		INSERT INTO user_info
			(
				user_id,
				user_name
			 )
		VALUES
			(
				#{userId},
				#{userName},
			)
</insert>

但是下面这种字段名不一致写法会让我很难受,这里该怎么操作才能实现我的预期写法呢?

展开
收起
爱吃鱼的程序员 2020-06-07 17:05:14 530 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>那么你就不要下划线,直接比如 字段 UserName 对应 实体类 userName</p>
    
                    
    
                                回复 <a class="referer" target="_blank">@叶落花开</a>  : 那就老老实实的写。
                        
    
                            但是我又不想实体类里的参数带下划线,感觉不伦不类啊
                        
    
                            字段名都是有下划线的,这个没辙....
                        
    
                        <p>用@Param注解可以实现,比如dao里的接口为:</p>
    
    public interface UserInfoDao {
        Integer addUser(@Param("user_id") Long userId, @Param("user_name") String userName);
    }
    
    

    你就可以在mapper里用#{user_id}和#{user_name}取值了。

    但是,这样的话接口就不能用addUser(UserInfo userInfo)了。

                                回复 <a class="referer" target="_blank">@叶落花开</a>  : 对啊,那就接受数据库字段名下划线分割吧,毕竟每种语言的规范不一样。
                        
    
                            这个方法虽然勉强可以,但是实在是有点Low了,添加和编辑时如果传入很多字段咋办?.....感觉无解了,要不我还是老老实实写吧
    
    2020-06-07 17:05:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载