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

异常已经贴出来了;


实体类:

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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值