MyBatis
- 在持久层中,如果传递多个参数需要加上
@Param
注解,不然会报错
org.apache.ibatis.binding.BindingException: Parameter 'account' not found. Available parameters are [arg1, arg0, param1, param2]
public interface AdminDao {
public Integer login(@Param("account") String account, @Param("password") String password);
}
- 在
db.properties
写登录名时不要写username=xxxx
,不然会报错,要换个名字
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Access denied for user 'LM'@'localhost' (using password: YES))
java.sql.SQLException: Access denied for user 'LM'@'localhost' (using password: YES)
这么写
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/mis
jdbc.username=root
jdbc.password=xxxx
- 这里的命名空间一定要唯一,最好和dao接口或者实现类放在一个包里,要一个实实在在的持久层接口或者接口实现类,你按住ctrl+鼠标左它可以跳转,select的id要和持久层中的方法名对应
<mapper namespace="com.zj.mis.dao.AdminDao">
<select id="login" parameterType="java.lang.String" resultType="java.lang.Integer">
select aid from tb_admin where aname = #{account} and apwd=#{password}
</select>
</mapper>
package com.zj.mis.dao;
import org.apache.ibatis.annotations.Param;
public interface AdminDao {
public Integer login(@Param("account") String account, @Param("password") String password);
}
- 持久层中的方法不能同名(参数不一样也不行)