UserMapper:
想要携带参数到数据库查询,这样不对吗,我查了都是这样写的啊
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言这样写是可以的,但建议使用注解的方式来注入参数,使代码更加简洁明了。 例如:在接口方法上加入@Param注解,然后在方法中直接使用注解里的参数名即可,如下所示:
public interface UserMapper {
List<User> getUserByName(@Param("name") String name);
}
这里使用了@Param注解来注入参数名称,然后在方法中直接使用该名称即可。 另外,在使用注解时,Mybatis会自动将参数值赋给对应名称的参数,无需手动赋值。 例如:
List<User> userList = userMapper.getUserByName("Tom");
这里传入的参数值是"Tom",Mybatis会自动将该值赋给@Param注解里指定的参数"name"。 完整的例子如下: UserMapper.java文件:
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface UserMapper {
List<User> getUserByName(@Param("name") String name);
}
User.java文件:
public class User {
private String id;
private String name;
private int age;
// 省略Getter和Setter方法
}
userMapper.xml文件:
<select id="getUserByName" resultType="User">
select * from user where name=#{name}
</select>
测试类Test.java文件:
public class Test {
public static void main(String[] args) {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserByName("Tom");
System.out.println(userList);
sqlSession.close();
}
}
输出结果:
[User{id='1001', name='Tom', age=20}, User{id='1004', name='Tom', age=22}]