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);
      }
    }
全部评论
点赞 回复 分享
发布于 2019-10-03 14:58
点赞 回复 分享
发布于 2019-10-03 15:14
附录 mapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="userMapper"> <!-- 通过id查询用户 --> <select id="selectUserById" parameterType="Integer" resultType="com.test.bean.user"> select * from user where u_id = #{id} </select> <!-- 通过名字进行模糊查询 --> <select id="selectUserByName" parameterType="String" resultType="com.test.bean.user"> <!-- 这里用用value 来接收 用其他单词会出问题 --> <!--select * from user where u_username like "%${value}%" --> <!-- ${}占位符易产生sql注入问题 尽可能多使用#{}占位符 --> select * from user where u_username like "%"#{name}"%" </select> <!--添加用户--> <insert id="insertuser" parameterType="com.test.bean.user"> <!-- 通过占位符+字段可以得到一个属性值 --> insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid}) <!-- 虽然运行了代码,但是数据库中不会显示保存进去,需要提交事务(jdbc)session提交 --> </insert> <!-- 修改用户 --> <update id="updateuser" parameterType="com.test.bean.user"> update user set u_username = #{u_username} where u_id =#{u_id} </update> <!-- 删除用户 --> <delete id="deleteuserbyId" parameterType="com.test.bean.user"> delete from user where u_id = #{id} </delete> </mapper>sqlConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 使用spring之后就省去 --> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务 --> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 使用连接池 连接数据库 --> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm_mybatis?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"/> <!--按住ctrl键 检验是否能跳转 --> </mappers> </configuration>
点赞 回复 分享
发布于 2019-10-03 15:15

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务