异常已经贴出来了;
实体类:
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)