发表于: 2017-07-07 20:36:19
2 1277
一.今天完成的主要事情
1.完成用JDBC链接数据库,并且实现了Interface和Template的分离.
这是JDBC项目的目录
User.java:主要是对数据库中表的对象的实现,只包含构造方法和getter以及setter,没有业务逻辑
package com.putaoteng.model;
public class User {
private long id;
private String name;
private String pasword;
public User() {
super();
}
public User(long id, String name, String pasword) {
super();
this.id = id;
this.name = name;
this.pasword = pasword;
}
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 String getPasword() {
return pasword;
}
public void setPasword(String pasword) {
this.pasword = pasword;
}
}
UserDao.java:是一个接口,主要定义数据库增删改查操作方法的接口
package com.putaoteng.dao;
import java.util.List;
import com.putaoteng.model.User;
public interface UserDao {
/**
* 增加一个用户
* @param user User类对象
* @return 返回增加的用户数
* */
public int addUser(User user);
/**
* 删除一个用户
* @param user User类对象
* @return 返回删除的用户数
* */
public int deleteUser(User user);
/**
* 根据用户id查询用户
* @param id 用户id
* @return 返回查询到的用户对象
* */
public User queryUserById(long id);
/**
* 根据用户姓名查询用户列表
* @param name 用户姓名
* @return 返回查询到的用户对象集
* */
public List<User> queryUserByName(String name);
/**
* 根据用户id更新用户信息
* @param user 新的用户信息
* id 要更新的用户id
* @return 返回更新成功的用户数量
* */
public int updateUser(User user, long id);
}
UserDaoImplate.java:UserDao接口的具体实现,增删改查操作等具体实现都在这里(由于比较长,就不全部贴出来了,贴一个增加数据,其他的逻辑类似,只是sql语句不同,参数有些不同而已,因为每一次增删改查操作都要涉及链接数据库和释放数据库资源,所以将链接数据库和释放数据库资源封转为私有方法,这里也有一个问题,就是不知道链接数据库和释放数据库的方法到底是放在utils中还是放在该实现中更好一些,希望师兄指点)
public int addUser(User user) {
Statement st = null;
ResultSet rs = null;
int result = 0;
try {
conn = getConnection();
st = conn.createStatement();
String sqlAdd = "insert into user (id, name, password)" +
"values" + "(" + user.getId()+", \""+user.getName()+"\", \""+user.getPasword()+"\")";
result = st.executeUpdate(sqlAdd);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
try {
closeConnection(conn, st, rs);
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
最后就是一个调用这些方法的Demo,因为还没有学测试,所以先用demo测试,明天学习junit之后,为这些方法编写测试.
2.完成用mybatis链接数据库
首先是mybatis的工程目录
创建maven工程,添加依赖之后,首先就是创建全局配置文件sqlMapConfigure.xml,该文件的内容可以从网上找到,但是其中的dataSource中的driver,url,username,password字段是要根据自己的实际情况配置的.
接下来是编写数据库操作接口,该接口同JDBC链接数据库时一样
然后是为要操作的表创建mapper.xml文件,每一个表对应一个mapper.xml文件,文件中配置如图:
接着就是编写代码调用
这里也可以回答任务中的一个问题:为什么mybatis不需要Implate
因为对数据库操作的实现大部分代码都相同,所以mybatis通过配置文件的方式,利用反射技术,仅通过
配置文件中的信息就能够自动创建操作数据库的对象,免去了程序员手动创建操作数据库的实现对象,
简化了工作流程
二.明天计划完成的事情
1.学习Junit单元测试,尝试为JDBC链接数据库和mybatis链接数据库编写单元测试
2.学习spring框架
3.如果有时间就再学习一下log4j日志
三.遇到的问题
用mybatis链接数据库时,mapper.xml中的resultType参数的使用出现了问题,总是报错
解决方式,师兄指点 + 网络搜索相关基础知识,最后圆满解决
四.收获
1.了解了JDBC和mybatis链接数据库的基本实现
2.对mybatis的优势理解更加透彻
3.明白了mybatis中resultType和parameterType的具体用法,两个参数的传入和传出都是针对数据库,而不单单是接口中的方法,所以在对数据库进行插入,删除,更新操作时,即使接口中的方法有返回值,但是在mapper.xml中也不能加入resultType参数
4.了解并应用了mybatis配置文件中别名的使用,简化了配置操作.
评论