Mybatis开发Dao层
dao模式
- 数据 访问 对象 : 访问数据的
- jdbc:将程序中的数据在瞬间状态和持久状态间转换的机制即为数据持久化
- 程序关闭 数据不在 内存
- 程序关闭 数据还在 硬盘
ResultSet rs = null; //结果集对象 LinkedList<Object> ls = new LinkedList<Object>(); //将结果集用链表保存 ...省略代码 try { while(rs.next()) { ls.add(rs); } System.out.println("数据导出结束,关闭相关连接"); } catch (SQLException e) { System.out.println("数据导出异常"); e.printStackTrace(); } ...省略代码
- 没有采用dao设计模式
- 代码放在一起,可重用性低
- 代码重复性高
- 可读性低,可维护性差
开发dao层
- bean类的代码
package com.test.bean; import java.util.Date; public class user { private Integer u_id; private String u_username; private String u_password; private String u_sex; private Date u_createTime; private Integer u_cid; public Integer getU_id() { return u_id; } public void setU_id(Integer u_id) { this.u_id = u_id; } public String getU_username() { return u_username; } public void setU_username(String u_username) { this.u_username = u_username; } public String getU_password() { return u_password; } public void setU_password(String u_password) { this.u_password = u_password; } public String getU_sex() { return u_sex; } public void setU_sex(String u_sex) { this.u_sex = u_sex; } public Date getU_createTime() { return u_createTime; } public void setU_createTime(Date u_createTime) { this.u_createTime = u_createTime; } public Integer getU_cid() { return u_cid; } public void setU_cid(Integer u_cid) { this.u_cid = u_cid; } public String toString() { return "user [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_sex=" + u_sex + ", u_createTime=" + u_createTime + ", u_cid=" + u_cid + "]"; } }
- 接口类的代码 interface
package com.test.dao; import com.test.bean.user; public interface userdao { //根据id查询用户 public user getuserById(Integer id); }
- 实现类代码
package com.test.dao; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.test.bean.user; public class userdaoImpl implements userdao { private SqlSessionFactory ssf ; //单例的对象 所以提取出来 public userdaoImpl(SqlSessionFactory ssf) { //构造器/函数 通过构造器给ssf赋值 this.ssf = ssf; } public user getuserById(Integer id) { SqlSession session = ssf.openSession(); //每一个线程都需要创建一个session 所以只能放在方法里面 String arg0 = "userMapper.selectUserById"; return session.selectOne(arg0, id); } }
- 工厂类的代码
package com.test.ServiceFactory; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class sqlSessionFactory { private static SqlSessionFactory ssf =null; public static SqlSessionFactory getSqlSessionFactory(){ InputStream in ; //局部变量就好了 String resource = "sqlMapConfig.xml"; try { in = Resources.getResourceAsStream(resource); SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); ssf = ssfb.build(in); } catch (IOException e) { System.out.println("读取配置文件出现异常"); e.printStackTrace(); } return ssf; } }
- 测试类的代码
package com.test.test; import org.junit.Test; import com.test.ServiceFactory.sqlSessionFactory; import com.test.bean.user; import com.test.dao.userdao; import com.test.dao.impl.userdaoImpl; public class userdaoTest { @Test public void DaoTest() { userdao dao = new userdaoImpl(sqlSessionFactory.getSqlSessionFactory()); user user = dao.getuserById(1); System.out.println(user); } }