发表于: 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配置文件中别名的使用,简化了配置操作.


返回列表 返回列表
评论

    分享到