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)
实体类:
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)
相关文章推荐
- Android之使用Http协议实现文件上传功能
- Android Native 绘图方法
- mysql集群之MMM简单搭建
- 通晓网络测试常用命令
- Ruby中的异常处理代码编写示例
- C#中struct和class的区别详解
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- MySQL抛出Incorrect string value异常分析
- Nodejs学习笔记之测试驱动
- 深入了解PHP类Class的概念
- 浅谈C#中简单的异常引发与处理操作
- jquery 表单验证之通过 class验证表单不为空
- 详解C#编程中异常的创建和引发以及异常处理
- setAttribute 与 class冲突解决
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析
- 详解js中class的多种函数封装方法
- jQuery使用hide方法隐藏指定元素class样式用法实例
- jQuery给多个不同元素添加class样式的方法