感觉现在用的MyBatis和老师讲的用法不太一样

感觉现在用的MyBatis和老师讲的用法不太一样

http://img1.sycdn.imooc.com//climg/60ab3f9109c76b6919201048.jpg

这个是我直接用数据库的mybatis-generator自动创建的;IDEA自带的;

http://img1.sycdn.imooc.com//climg/60ab3fdc0942045619201048.jpg

这是我的mybatis_config.xml文件,这个文件里并没有包含<Mappers><Mapper></Mapper></Mappers>标签,也没有对驼峰命名进行转换;但是我印象中,现在更多的都是这样子写的;反倒是老师讲的方法;实际开发过程中,每次都要去修改mybatis-config.xml文件,我觉得是不是不太合理?如果是公司里的开发项目的;几个人一起开发一个项目,每个人都去改这种配置文件的话,不是很容易把配置文件改坏掉吗?

http://img1.sycdn.imooc.com//climg/60ab40a20954cadd19201048.jpg

这是自动生成的mapper.xml文件,这里,在最上面的地方用<resultMap>的方式进行定义,之所以没在mybatis-config.xml中进行驼峰命名的转换,是不是就是因为这个resultMap?在这里做了转换,所以不需要在mybatis-config.xml中进行定义?

但是,为什么不需要再mybatis-config.xml中配置<Mappers>标签还想请老师解答一下,我看了一圈,都没有找到这个的定义

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,问一下同学是怎样使用mybatis-generator生成创建的,具体步骤是什么呢?建议同学详细描述一下。另外问一下同学代码能正常运行吗?

通常使用mybatis-generator自动生成代码时,需要添加配置文件,说明一些配置的信息,如:

http://img1.sycdn.imooc.com//climg/60ab6e34097f968810960557.jpg

如上代码指明mapper配置文件以及dao接口的存放位置,但是在同学的截图中,并没有这些内容。

​实际开发中,mybatis-config.xml文件并不会经常修改。

使用<resultMap>将实体类属性和数据库字段关联,不需要再配置驼峰命名转换。

祝学习愉快~

  • Ricardo慕 提问者 #1

    我没有找到你说的这个generator.xml文件;

    生成方式是通过IDEA自带的database生成的;详细步骤如图:http://img1.sycdn.imooc.com//climg/60ab748409ff35ed19201048.jpg

    http://img1.sycdn.imooc.com//climg/60ab7484096b03b012000700.jpg


    2021-05-24 17:40:30
  • 好帮手慕阿满 回复 提问者 Ricardo慕 #2

    同学你好,问一下同学使用的IDEA的版本是多少,这边测试了18,20版都没有出现generator选项,如:

    http://img1.sycdn.imooc.com//climg/60ab81870962950505230806.jpg

    在同学的截图中,如下这一点相当于配置文件中的配置信息。

    http://img1.sycdn.imooc.com//climg/60ab83080979d5f911320492.jpg

    祝学习愉快~


    2021-05-24 18:47:10
  • Ricardo慕 提问者 回复 好帮手慕阿满 #3

    IDEA版本 2020.3.1;可能是我装了什么插件?

    第二个问题;其实我是想知道为什么在mybatis-config.xml中没有配置mapper的情况下,程序还是能分辨出去读取resources.generator中的mapper文件;第二张图里的,好像只是接口,实体类,mapper.xml的文件存放路径的设置以及包名等的设置吧;似乎并不涉及核心配置文件如何识别mapper?

    2021-05-24 19:16:56
好帮手慕阿满 2021-05-25 09:43:16

感谢同学的提示,这边测试成功使用generator生成对应的文件。

关于同学的问题,在mapper文件中,namespace指向了对应的dao文件,使其关联起来,如:

http://img1.sycdn.imooc.com//climg/60ac562f0904799911240324.jpg

祝学习愉快~

  • 提问者 Ricardo慕 #1

    我记得老师讲的时候,这个namespace是随意定的一个名字;不重复就ok是吧;

    是不是就是说,这样子生成的mapper.xml文件,是通过namespace直接和接口绑定;然后调用xml中的sql语句的?

    另外,这样子的方法,好像是不需要再通过创建SqlSession对象来调用sql语句的吧;直接在接口里编写方法;然后在xml中编写对应的sql语句,最后通过实现类实现这个接口中的方法是不是就可以调用sql语句了?

    2021-05-25 11:22:46
  • 提问者 Ricardo慕 #2

    老师,我刚刚试了一下;发现其实还是需要在mybatis-config.xml中配置mappers标签,不然的话会报找不到文件的错误

    2021-05-25 13:36:58
  • 好帮手慕阿满 回复 提问者 Ricardo慕 #3

    同学你好,同学的理解是正确的。

    namespace不能定义为相同的名字。这里是将dao文件和对应的mapper文件进行了绑定。在接口中写方法,在mapper文件中写sql语句,调用方法执行sql语句。

    祝学习愉快~

    2021-05-25 13:42:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师