发表于: 2017-11-05 19:47:47
2 820
今天完成的事情:用mybatis做增删改查。
在网上找教程,找到一个讲得比较清晰的,按照他的步骤来
http://www.cnblogs.com/franson-2016/p/5500815.html
1.首先肯定要导入mysql包。由于dao接口和表的实体类之前就有了,我直接复制过来
2.MyBatisUtils类
打到一半这个类用不了,要引入mybatis包(看到红色的说明类用不了,要么alt加上鼠标左键看有没有import class,没有就说明要导入相应的包)
建好了。我看了一下教程的箭头所指这个文件,塔的就是数据库环境,我还没建。边做边理解,推测
3.xml文件,里面写sql语句(我想这就是为什么mybatis不需要实现类,因为sql语句都写在这里了。可是为什么写在这里呢?不懂)
我发现师兄的代码有的select返回的是resulttype,有的是resultmap,百度看了下两者的区别
http://blog.csdn.net/woshixuye/article/details/27521071
我理解为:resulttype后面接你实体类的名字,他返回的数据对应着你实体类的变量。而resultmap则可以自由定义列数,要显示哪些列,可以用在连表查询上。还有蓝色圈住的地方,这应该是需要的包,否则后面的属性用不了。
突然发现这个文件后缀是tld,于是百度看怎么新建xml文件
新建file,名字加上xml后缀就行了
4.config.xml,核心配置文件,在此配置数据库环境
然后新建测试类,跑跑看
报错了,12行,看一下config.xml,原来没有加上mapper引用EnrollInfo.xml
加上mapper后,再看看
.......
中午弄到晚上,搞来搞去,请教别人,都不行,最后,我把错误贴给师兄看就是这个蓝色的部分,我翻译查看他说过时了,师兄说mysql-connector-java版本太高,数据库版本太老。我本来是下载最新的包,换成5.4的,好了呜呜呜
显示是成功了,因为返回值resulttype是EnrollInfo,可是增删改呢?如果成功了他应该返回一个int或者boolean,然后我来提示成功还是失败。
我的接口增删改返回的都是boolean,那么xml里的select呢,我通过百度了解下怎么修改返回值,可还是不行
百度找了半天,原来是xml有问题
新增语句,则是insert标签,查询语句,则是select标签,对应起来。虽然成功了,可是数据库数据并没有增加,修改也是。查询却出来了,不论是带参数的还是不带的。
删除会报错
群里师兄说没有commit,于是我百度看找到了解决方法http://blog.csdn.net/japanstudylang/article/details/51679662
增删改有分为自动提交和手动提交,默认是手动提交,我改成了自动提交也就是这里设置为true,结果新增和查询成功了
然后是修改
然后是删除
模糊查询要这么写
明天计划的事情:学习Junit,并尝试写自己的第一个单元测试
遇到的问题:就是这个增删改,返回的int大于0,执行成功了,可是数据库没有变化,查询都能查询出来。
收获:熟悉mybatis的增删改查。和jdbctemplate一样,刚刚接触就做一套增删改差,必然不熟练,希望能在以后的项目里多熟悉,加深理解
评论