发表于: 2018-04-04 18:12:10

1 736



day7



今天完成的事情:


1.当数据库字段名和对象属性名不一样时,查询的配置文件上要用resultMap而不用resulttype,不然会返回null.

<select id="findById" parameterType="long" resultMap="PersonMap">
  select id,person_id,create_at,update_at,NAME,QQ,TRAINTYPE,
  JOINTIME,GRADUATION,ONLINEID,dailylink,oath,senior,source,status_ from post where person_id = #{p_personid}
</select>
<resultMap type="cn.song.entity.Person" id="PersonMap">
<!-- id标签:映射主键属性
      result标签:映射非主键属性
      property:实体的属性名
      column:表的字段名
      jdbcType="数据库字段类型 -->
  <id column="id" property="uuid" />
<result column="person_id" property="p_personid" />
<result column="creat_at" property="p_createTime" />
<result column="update_at" property="p_updateTime" />
<result column="name" property="p_Name" />
<result column="QQ" property="p_qq"/>
<result column="TRAINTYPE" property="p_traintype" />
<result column="JOINTIME" property="p_jointime" />
<result column="GRADUATION" property="p_graduation" />
<result column="ONLINEID" property="p_onlineid" />
<result column="dailylink" property="p_dailylink" />
<result column="oath" property="p_oath" />
<result column="senior" property="p_senior" />
<result column="source" property="p_source" />
<result column="status_" property="p_status" />
</resultMap>

如上,字段名和属性名不一样,如果使用resultType导致返回的数据库记录无法set进对于的属性中,会返回null。


2.重写了mybatis+Spring,重新建表

CREATE TABLE Post2(
id BIGINT PRIMARY KEY,
person_id BIGINT,
create_at BIGINT,
update_at BIGINT,
NAME VARCHAR(20),
QQ VARCHAR(20),
TRAINTYPE VARCHAR(20),
JOINTIME LONG,
GRADUATION VARCHAR(20),
ONLINGID VARCHAR(20),
dailylink VARCHAR(50),
oath VARCHAR(100),
senior VARCHAR(20),
source VARCHAR(20),
status_ VARCHAR(20)
)

测试增删改查能执行,但是有个bug难解决,单步调试了一下午没搞明白,期待后续帆哥来看看

3. 在云服务器上安装了mysql的server和client



明天计划的事情:


研究如何安装jdk到云服务器,以及远程连接的问题


遇到的问题:

  

写mybatis的增删改查时,结果出现了错误如下:

Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating interface dao.UserMapper with invalid types () or values (). Cause: java.lang.NoSuchMethodException: dao.UserMapper.<init>()

改来改去了一天,再网上查大约有几种答案:

大约是(1)缺少定义无参数的构造函数;(2)缺少相关参数的get和set方法;(3)需要明确指定封装的参数  例如(@param(“id”)Integer id)

检查了以上三种情况,发现仍有上面的错误,而且仅仅是查询有错误,增删改都正确,最后才发现是PersonDao.xml中<resultMap >配置错误,他的type类型应该为要映射的JavaBean类,而我写成了对于dao中接口的映射,导致一直报错。

  

收获:


调bug的同时加深了我对Spring内部的一些认识。

 



返回列表 返回列表
评论

    分享到