UserDao–基本操作的实现接口
package com.foot.mvcpro.dao;
import java.sql.Connection;
import java.util.List;
import com.foot.mvcpro.model.User;
/**
* 接口制定规则,只定义方法但是不去实现,定义与User有关系的操作方法
* @author footprint
*
*/
public interface UserDao {
/**
* 实现插入一条用户数据
* @param user
* @return
*/
public int save(User user);
/**
* 根据用户ID删除用户数据
* @param id
* @return
*/
public int deleteUserById(int id);
/**
* 根据用户ID修改用户数据
* @param id
* @return
*/
public int updateUserbyId(User user);
/**
* 根据用户的ID,返回一个用户对象,不支持事务
* @return
*/
public User getUserById(int id);
/**
* 根据用户的ID,返回一个用户对象,支持事务
* @return
*/
public User getUserById(Connection conn, int id);
/**
* 返回所有的用户对象
* @return
*/
public List<User> getUserAll();
/**
* 查询指定用户名的用户有多少条
* @param name
* @return Object 转换 数字需要用 long 来接收
*/
public long getCountByName(String name);
}
该类中必须对每个方法写上注释
UserDao的实现UserDaoImpl
package com.foot.mvcpro.dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import com.foot.mvcpro.model.User;
import com.foot.mvcpro.utils.JdbcUtils;
public class UserDaoImpl extends BaseDao<User> implements UserDao {
@Override
public int save(User user) {
String sql = "INSERT INTO `user`(`username`,`password`,`phone`,`address`,`regdate`) VALUES (?,?,?,?,?);";
return super.update(sql, user.getUsername(), user.getPassword(), user.getPhone(), user.getRegDate());
}
@Override
public int deleteUserById(int id) {
String sql = "DELETE FROM `user` WHERE id = ?;";
return super.update(sql, id);
}
@Override
public User getUserById(int id) {
String sql = "SELECT `id`, `username`, `password`, `phone`, `address`, `regdate` regDate "
+ "FROM `user` WHERE id = ?;";
return super.get(sql, id);
}
@Override
public User getUserById(Connection conn, int id) {
User user = null;
String sql = "SELECT `id`, `username`, `password`, `phone`, `address`, `regdate` regDate "
+ "FROM `user` WHERE id = ?;";
try {
conn.setAutoCommit(false);
user = super.get(conn, sql, id);
conn.commit();
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
JdbcUtils.closeConn(conn);
}
return user;
}
@Override
public int updateUserbyId(User user) {
String sql = "UPDATE `user` SET `username` = ?, `password` = ?, `phone` = ?, `address` = ? WHERE id = ?;";
return super.update(sql, user.getUsername(), user.getPassword(), user.getPhone(), user.getAddress(),
user.getId());
}
@Override
public List<User> getUserAll() {
// 注意查询的时候,变量名字一定要和JAVA里面对象的名字保持一致,如果不一致,需要用别名
String sql = "SELECT `id`,`username`,`password`,`phone`,`address`,`regdate`regDate FROM `user`;";
return super.getlist(sql);
}
@Override
public long getCountByName(String name) {
String sql = "SELECT COUNT(`id`) FROM `user` WHERE `username` = ?;";
return (long) super.getValue(sql, name);
}
}
注意
由于BaseDao的存在,UserDaoImpl的实现显得相当的简单。
转自
腾讯课堂 钟洪发 Java技术之JavaWeb入门 课程