发表于: 2017-12-28 22:21:28

1 650


今天完成的事情:

1、完成任务一验收标准中的除了CRUD的基本单元测试,加上根据学员名字,学号去查找报名贴的单元测试和Interface和ServiceImpl分开,把mybatis和jdbctemplate都重新按照标准做了一遍,这次真的是加深了理解,尤其是mybaits的,关于配置文件的

<!-- 插入 -->
<insert id="insert" parameterType="com.jnshu.domain.Student">
   insert into student (name,type,number)values(#{name},#{type},#{number})
</insert>

<!-- 查找 -->
<select id="getStudentById" resultType="com.jnshu.domain.Student">
   select name,type from student where id =#{id}
</select>
<select id="getStudentByName" resultType="com.jnshu.domain.Student">
   select from student where name like  CONCAT(CONCAT('%', #{name}), '%')
</select>
<select id="getStudent" resultType="com.jnshu.domain.Student">
   SELECT FROM student
</select>
<!-- 删除  -->
<delete id="delete" parameterType="int" >
   delete from student where id = #{id}
</delete>

<!-- 修改 -->
<update id="update" parameterType="com.jnshu.domain.Student" >
   update student set name = #{name},type=#{type}  where id = #{id}
</update>

附上这个过程中掌握的知识

1、sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段

<sql id="personColumns"> name, sex, updateTime</sql>

<select id="selectPerson" parameterType="int" resultType="hashmap">

select id, <include refid="personColumns"/> from person where id =#{id};

</select>

2、javabean别名:不用每次写包路径

<!-- In Config XML file,定义 -->

<typeAlias type=”com.someapp.model.User” alias=”User”/>

<!-- In SQL Mapping XML file,使用 -->

<select id=”selectUsers” parameterType=”int” resultType=”User”>

select id, username, hashedPassword from some_table where id = #{id}

</select>

3、

a)SQL的别名

<select id=”selectUsers” parameterType=”int” resultType=”User”>

select user_id as "id", user_name as userName, hashed_password as hashedPassword from some_table where id = #{id}

</select>

这一个当我们建表按照报名格式时会有很多形参,可以用得到

b)定义外部的resultMap

<resultMap id="userResult" type="User">

<id property="id" column="_id" />

<result property="name" column="_name" />

<result property="password" column="_password" />

</resultMap>

<select id="selectUser" parameterType="int" resultMap="userResult">

select _id, _name, _password from _user where _id =#{id};

</select>

明天计划的事情:

1、整合mybatis和spring,打包

2、尝试debug模式,熟悉操作,看看step35-47

遇到的问题:

1、Result Maps collection does not contain value for java.lang.Integer解决方法

解决办法:

1).检查mybatis的xml配置

2).在某处肯定有配错了的,如"resultMap" -->"resultType" 

2、mybatis绑定错误

如果出现:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误

按以下步骤一一执行:

1):检查xml文件所在的package名称是否和interface对应的package名称一一对应

2):检查xml文件的namespace是否和xml文件的package名称一一对应

3):检查函数名称能否对应上

4):去掉xml文件中的中文注释

5):随意在xml文件中加一个空格或者空行然后保存

3、返回 (多行)单列 数据

API:public < T> List< T> queryForList(String sql, Map<String, ?> paramMap, Class< T > elementType)

API:public < T> List< T> queryForList(String sql, SqlParameterSource paramSource, Class< T> elementType)
示例:List< String> namelist = template.queryForList("select name from student", new HashMap<>(), String.class);

public List<StudentgetStudentByName(String Name) {
   String sql "select * from student where name like ?";
   List<Studentstudents= this.jdbcTemplate.queryForList(sql, new HashMap<>(),String.class);
   return students;
   ListStringnamelist template.queryForList(sql, new HashMap<>()String.class);
}

4、下图注释,如果不注释,就能修改成功,否则报错。

 [main] DEBUG com.jnshu.dao.StudentDao.update - ==> Parameters: 哈哈11(String), slsl(String), null

[main] DEBUG com.jnshu.dao.StudentDao.update - <==    Updates: 0

[main] DEBUG com.jnshu.dao.StudentDaoTest - 修改失败

问题 :觉得Student stu = dao.StudentById(14);多余,重复,想改

收  获:

如上,今天收获还是挺大的,对mybatis操作数据库有点数了

禅道地址:http://task.ptteng.com/zentao/my-task-assignedTo-id_desc-117-20-4.html

任务一step1-35能确定点了完成。。


返回列表 返回列表
评论

    分享到