发表于: 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内部的一些认识。
评论