发表于: 2018-02-01 22:12:53
1 555
今天完 成的事情: 按照昨天的例子,自己实现了用mybatis连接数据库。现在可以对数据库进行一些简单的查询操作。
明天的计划:
继续添加增删查改的其他内容。
遇到的问题:
Dao接口中的方法没有定义参数;mybatis配置文件中的格式不熟悉引起的一些问题;查询的时候有字符串模糊查询;查询到对象时的打印问题,用了一个toString()的方法打印了对象的文本格式。
A.
在写好get.ResourcesAsReader(resource)后有提示”unhandled exception:java.io.IOException”时选择”add’catch’clause”时自动添加的是catch(IOException e)。要修改成catch(Exception e)。改不改的效果是一样的.
B.
这里的错误是没有在Dao接口中方法没有定义参数,其实看到红色的波浪线就可以直到了,但是基础知识不足,所以没有察觉出来。
C.
这里错误提示“Unknown DataSource property:user”,原因是在mybatis的配置文件中的把数据库用户名(username)写成了user。
D.
pom.xml文件中mysql驱动version写的是release,但是没有加载,后来明确的数字后才可以自动加载(改成了5.1.43)。但是mybatis的version也是release就没有问题。
E.
在mybatis的配置文件中,mysql后面没有写”:”。
F.
可以运行后有两个结果出不来。第一行命令是打印对象user,这里的表达方式没办法把整个对象的属性显示出来。
User user = userMapper.findUserById(1);
System.out.println(user)
String password = userMapper.findPasswordByName("iiiii");
System.out.println(password);
运行结果:
com.ptteng.pojo.User@72d818d1
null
所以在User.class中添加下面的方法。用于返回对象的字符串表示,这个字符串是以文本方式表示这个对象。
@Override
public String toString() {
return "user-->id=" + id +",name=" + name +",password=" + password +"。";
}
并把上面打印对象的改成下面的user.toString().就可以成功打印出依据id查询到的对象的全部信息。
User user = userMapper.findUserById(1);
System.out.println(user.toString());
第二个是用字符串做参数来查询字符串,得不到结果原因是出在参数类型上了。根据《深入理解Mapper映射文件》(http://blog.csdn.net/baidu_36697353/article/details/68670277)
把(WHERE id = #{id})改为(WHERE name like '%${value}%')这样就可以实现用字符串搜索字符串了。这里的用法是模糊查询,所以参数字符串可以不用很精确。
<select id="findPasswordByName" parameterType="String" resultType="java.lang.String">
SELECT PASSWORD FROM t_user WHERE name like '%${value}%'
</select>
还有在运行过程中一直提示SSL(Secure Sockets Layer 安全套接层)协议.这个现在先不查。
收获:
1.现在对mybatis框架连接数据库的过程比较熟悉了。
2.处理了一些错误提示。
3.了解一些mybatis中的查询方式。
评论