<delete id='del' parameterType='java.lang.Long'>
delete from student where s_id=#{id};
</delete>
int del(@Param("id")Long id);
一个删除的sql语句,他的参数是一个long类型的id,显然@param设置了这个参数别名为id。但是假如我们不使用别名还是否会成功呢?
我们去掉@param
int del(Long id);
执行后,我们发现并未报错。那我们将名称进行更改呢?
int del(Long idd);
<delete id='del' parameterType='java.lang.Long'>
delete from student where s_id=#{idds};
</delete>
还是运行成功了,但这种情况当我们的参数增加为2就不管用了,这说明这两者之间并不是强绑定的关系。如果我们没有规定他的参数别名他默认为param1,param2…。
那如果我们传输的是pojo呢?
package online.fatotaku.entities;
public class Student {
private Long id;
private String name;
private Integer age;
private Integer sex;
private Integer gId;
private Integer cId;
private Grade grade;
private Class rank;
public Student() {
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
", gId=" + gId +
", cId=" + cId +
", grade=" + grade +
", rank=" + rank +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getgId() {
return gId;
}
public void setgId(Integer gId) {
this.gId = gId;
}
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public Class getRank() {
return rank;
}
public void setRank(Class rank) {
this.rank = rank;
}
public Student(Long id, String name, Integer age, Integer sex, Integer gId, Integer cId, Grade grade, Class rank) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.gId = gId;
this.cId = cId;
this.grade = grade;
this.rank = rank;
}
public Student(Long id, String name, Integer age, Integer sex, Grade grade, Class rank) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.grade = grade;
this.rank = rank;
}
public Student(Long id, String name, Integer age, Integer sex, Integer gId, Integer cId) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.gId = gId;
this.cId = cId;
}
}
int add(Student student);
<insert id="add" parameterType="student">
insert into student values (#{id},#{name},#{age},#{sex},#{gId},#{cId});
</insert>
执行成功,新版mybatis在设置中已经默认打开别名映射,所以如果是对象,可以直接使用属性名,但如果是普通的一个个参数,这里推荐写上@param来规定别名。