您的位置:首页 > 大数据 > 人工智能

Mybatis junit测试时报: parameter *** not found.available 错误处理

2016-03-22 22:44 495 查看
异常已经贴出来了;

实体类:

package com.model;

public class Person {

    private Integer pid;

    private String pname;

    private String psex;

    private String ppass;

    public Integer getPid() {

        return pid;

    }

/*    public void setPid(Integer pid) {

        this.pid = pid;

    }*/

    public String getPname() {

        return pname;

    }

    public void setPname(String pname) {

        this.pname = pname == null ? null : pname.trim();

    }

    public String getPsex() {

        return psex;

    }

    public void setPsex(String psex) {

        this.psex = psex == null ? null : psex.trim();

    }

    public String getPpass() {

        return ppass;

    }

    public void setPpass(String ppass) {

        this.ppass = ppass == null ? null : ppass.trim();

    }

public Person(String pname, String psex, String ppass) {
super();
this.pname = pname;
this.psex = psex;
this.ppass = ppass;
}

public Person() {
super();
System.out.println("Person.Person()0000000000");
}

public Person(String pname, String ppass) {
super();
System.out.println("Person.Person()111111111");
this.pname = pname;
this.ppass = ppass;
}

public Person(String pname) {
super();
System.out.println("Person.Person()2222222222222222");
this.pname = pname;
}

######################################

dao:

package com.dao;

import com.model.Person;

public interface PersonMapper {

    int deleteByPrimaryKey(Integer pid);

    int insert(Person record);

    int insertSelective(Person record);

    Person selectByPrimaryKey(Integer pid);

    

    /*Person selectByNameAndPass(Person person) ;*/

    int updateByPrimaryKeySelective(Person record);

    int updateByPrimaryKey(Person record);

    Person selectByNameAndPass(String pname,String ppass) ;

}

   #####################################################

service:

package com.service;

import com.model.Person;

public interface PersonService {
Person getPersonByPrimaryKey(int id) ;
Person getPersonBynameAndPass(String name,String pass) ;
void savePerson(Person person) ;

}

############################################

serviceImpl

public Person getPersonBynameAndPass(String name, String pass) {
// TODO Auto-generated method stub

return personMapper.selectByNameAndPass(name,pass);
}

###################################

sql.xml

<select id = "selectByNameAndPass" resultMap="BaseResultMap" parameterType="java.lang.String" > 

  select 

  <include refid="Base_Column_List" />

  from person

  where pname = #{pname,jdbcType=VARCHAR} and ppass = #{ppass,jdbcType=VARCHAR}

  </select>

###########################################

junit 测试类:

@Test
public void test1(){
person = personService.getPersonBynameAndPass("张三", "123456") ;
System.out.println("bbbbbbb");
System.out.println(person.getPname());
logger.info(JSON.toJSONString(person));
}

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

解答:因为mybatis的sql中的parameterType只能有一个,而如果用密码和name来查找的话肯定要传两个参数,所以这个时候就要封装,将两个封装到一个里面

将dao service 以及impl 和sql.xml修改之后就能运行成功了,成功的代码如下:

dao:

Person selectByNameAndPass(Person person) ;

sql.xml

<select id = "selectByNameAndPass" resultMap="BaseResultMap" parameterType="com.model.Person" > 

  select 

  <include refid="Base_Column_List" />

  from person

  where pname = #{pname,jdbcType=VARCHAR} and ppass = #{ppass,jdbcType=VARCHAR}

  </select>

service

Person getPersonBynameAndPass(String name,String pass) ;

impl

@Override
public Person getPersonBynameAndPass(String name, String pass) {
// TODO Auto-generated method stub
Person person = new Person();
person.setPname(name);
person.setPpass(pass);
return personMapper.selectByNameAndPass(person);
}

最后说一下建表:就是主键id自增

name  varchar(20)

sex varchar(2)

pass varchar(50)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息