关于UserDaoImpl.java代码中的一些问题:代码粘贴如下,求大神指导。
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDaoImpl {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public int getMatchCount(String userName, String password){
String sql = "SELECT COUNT(*) FROM FD_USERS WHERE USERNAME=? AND PASSWORD=?";
//return getMatchCount(userName, password);
return jdbcTemplate.queryForInt(sql,new Object[]{userName,password});
}
}
问题:①dao到底是一个类还是一个接口?我看有的程序写成类有的写成接口,到底哪个好?
②这是书上的一段代码,我想知道怎么只有setter没有getter?
③return的返回值如果是注释的方法会怎样?二者有什么区别?
④还是return返回值:new Object[]{userName,password}里的大括号是什么?以前没见过这么写代码,请大神解释! 展开
答:dao通常是设计模式里面的一个名词,在MVC模式里充当的是数据持久层,也称为模型层(M)。所用持术很多,具体可以找一些设计模式的资料查看,目前市场上最流行的M层的两个技术是ibatis、hibernate框架。要区分类和接口很简,直接看类名前面的关键字“class”是一个类,“interface”是一个接口。到底哪个好就要看项目的设计了,一般大型的项目都用接口,接口方便括展。
②这是书上的一段代码,我想知道怎么只有setter没有getter?
答:如果使用spring管理been,set方法是spring依赖注入所必需的方法,setter用于设置值,getter用于取值。
③return的返回值如果是注释的方法会怎样?二者有什么区别?
答:无意义代码。无需纠结。如果非要说会怎么样,按照代码逻辑,会返回“0”。区别在于,注释那句返回“0”,下面那句执行查询sql返回查询结果。
④还是return返回值:new Object[]{userName,password}里的大括号是什么?以前没见过这么写代码,请大神解释!
答:Object[]是一个Object类型的一维数组,大括号里面是给数组赋的两个初始值,object[0]=userName,object[1]=password。如果不清楚可以看看数组的语法结构。
希望可以帮到你。
关于setter和getter,还有return返回值那块能不能细讲讲?多谢了。
亲,怎么一点程序设计知识都没有吗??建议你买点书来看,《java程序设计》这本书很好,浅显易懂。好,还是给你讲讲吧。
setter和getter其实就是每种程序语言里都有的一个概念,java中叫“方法”,在C,C##或其它程序语言中叫做“函数”。setter就是定义了一个set方法,那getter就是定义一个get方法了。例如:
public class Person{
public String name;
public void setName(String _name){
this.name = _name;
}
public String getName(){
return this.name;
}
}
上面定义了一个person类,见名知意,我们叫它“对象”,现实意思就是一个人。这个人有一个名字,我们用“name”这个属性来表示。“name”前面的“String”是这个属性的类型,表示它是一个字符串;“String”前面的“public”是用来修饰这个属性的,表示它是公共的,任何“人”都可以访问。
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式为:
[修饰符] 返回值类型 方法名( 形式参数列表 ){
Java 语句;… … …
}
语法解释:
形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返回给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,无返回值,必须给出返回类型viod。
Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形式列表匹配。
return语句中止方法的运行并指定要返回的数据。
写不下了,写个记事本吧。
2、不用getter的话是为了不让你从外部通过这个类使用setter来的值(setter、getter对应写和读),当然可以用别的方法用到其值,不过不推荐,会破坏了封装性。
3、返回注释代码的话是一个无限递归报错,jdbcTemplate.queryForInt返回一个count(*)的结果
4、大括号是一个数组例如
Object[] o=new Object[]{"",""};
String[] str={"1","2"};
2.setter和getter是标准的bean类中的方法,在dao中不需要
3.用了//return getMatchCount(userName, password);会出错,应该会出现指针指向异常错误
4.new Object[]{userName,password}里的大括号中的{userName,password}是数组的成员,这是声明并初始化数组的写法
2013-05-18
public class UserDaoImpl implements UserDao {
这样的Dao才是接口。
2、这个是数据访问,不需要get/set对齐。
3、是调用自己了。
4、传递查询的参数,看前面的SQL语句,里面定义了两个参数。