zoukankan      html  css  js  c++  java
  • mybatis与ibatis--个人总结。

    简要说明:前面是ibatis,后面是mybatis。

    1.SqlMapConfig.properties与mybatis-config.properties是一样的,这里是数据库连接的参数设置。

    2.SqlMapConfig.xml与mybatis-config.xml

    头文件不同,因为前才是2.0版本,后者是3.0版本。

    里面的具体支点的格式的写法也有所不同。

    前者dataSource type="SIMPLE"则用

    <dataSource type="SIMPLE">
       <property name="JDBC.Driver" value="${driver}" />
       <property name="JDBC.ConnectionURL" value="${url}" />
       <property name="JDBC.Username" value="${username}" />
       <property name="JDBC.Password" value="${password}" />
      </dataSource>

    后者用pooled则用

    <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
       </dataSource>

    3.map.xml与mapper.xml

    头文件不同。

    支点的格式:前者是<sqlMap> 后者是<mapper>

    里面的属性也不太一样:

    前者可以用别名,但后者可能没有别名这个属性

    前者是parameterClass resultClass 后者是parameterType resultType

    前者用id=#id#及 #id   后者用id=#{id}

    前者: <!-- 相等查询:可以用sname=#sname# 模糊查询:'%$sname$%'-->

    后者用注解时就不用mapper.xml而是DAO中加入注解:

     @Insert("insert into student(id,sname,birth,score) values(#{id},#{sname},#{birth},#{score})")
         public void insert(Student student); //插入 

    4.都有DAO类与实体类。

    5.前者用DAOImpl类:

     1 private static SqlMapClient sqlMapClient=null;
     2     static{
     3         try {
     4             Reader reader=Resources.getResourceAsReader("com/com/SqlMapConfig.xml");
     5             sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
     6             reader.close();
     7         } catch (IOException e) {
     8             // TODO Auto-generated catch block
     9             e.printStackTrace();
    10         }
    11         
    12     }
    13 
    14 
    15 
    16     public void addStudent(Student student) {
    17         try {
    18             sqlMapClient.insert("addStudent", student);
    19         } catch (SQLException e) {
    20             // TODO Auto-generated catch block
    21             e.printStackTrace();
    22         }
    23     }
    24 
    25     public void deleteStudent(int id) {
    26         // TODO Auto-generated method stub
    27         try {
    28             sqlMapClient.delete("deleteStudent", id);
    29         } catch (SQLException e) {
    30             // TODO Auto-generated catch block
    31             e.printStackTrace();
    32         }
    33     }
    DAOImpl

    前者再用Test:

     1 IStudentDAO iStudentDAO=new IStudentDAOImpl();
     2         //1.查询所有
     3         /*System.out.println("测试查询所有:");
     4         List<Student> students=iStudentDAO.selectAllStudent();
     5         for(Student student:students)
     6             System.out.println(student.toString());*/
     7         //2.插入
     8         /*Student student=new Student();
     9         student.setId(311);
    10         student.setSname("依依");
    11         student.setBirth(Date.valueOf("2013-5-5"));
    12         student.setScore(100);
    13         iStudentDAO.addStudent(student);*/
    test代码

    6.后者没有实现类,而是用直接的Test:

     1 @Test
     2     public void IStudentDAOTest()throws Exception
     3     {
     4         String resource = "com/com/mybatis-config.xml";
     5         Reader reader = Resources.getResourceAsReader(resource);
     6         SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
     7         SqlSessionFactory factory = builder.build(reader);
     8         
     9         factory.getConfiguration().addMapper(IStudentDAO.class);//利用注解要加上这句是注册,否则不用加
    10         SqlSession session = factory.openSession();
    11         IStudentDAO iStudentDAO = session.getMapper(IStudentDAO.class);
    12         
    13         //1.insert:
    14         //(错)不可为何不能让接口函数是public int insert(Student student);会出现如下
    15         //(错)org.apache.ibatis.binding.BindingException:
    16         //(错)映射法'com.com.IStudentDAO.insert试图从一种原始的返回类型(int)方法返回null。
    17         //(错)只能用void类型
    18         //上面的说法是错的,是我在mapper.xml中写错了,本来是<insert>,让我写成了<selcet>
    19         //经我验证可以用int也可以void。
    20         
    21         //但也可以知道用<select>来插入,那样就把接口中的函数定义为void型
    22         Student student=new Student();
    23         student.setId(17);
    24         student.setSname("xiaoming");
    25         student.setBirth(java.sql.Date.valueOf("2012-9-8"));
    26         student.setScore(89);
    27         iStudentDAO.insert(student);
    28         
    29         //2.update
    30         /*Student dStudent=new Student();
    31         dStudent.setSname("dada2");
    32         dStudent.setId(16);
    33         dStudent.setBirth(java.sql.Date.valueOf("2013-7-1"));
    34         dStudent.setScore(48);
    35         iStudentDAO.update(dStudent);*/
    36         
    37         //3.delete
    38         /*iStudentDAO.delete("dada2");*/
    39         
    40         //1.记录的条数:
    41         /*iStudentDAO.countAll();
    42         System.out.println("记录条数:"+iStudentDAO.countAll()); */  
    43         //2.所有记录的列举:
    44         /*List<Student> students=iStudentDAO.selectAll();
    45         Iterator<Student> iter=students.iterator();
    46         while(iter.hasNext())
    47         {
    48             Student st=iter.next();
    49             //编号与数据库中的id不一样就会全为0,而不是具体的数字。
    50             System.out.println("编号:"+st.getId()+"  学生名:"+st.getSname()+"出生日期:"+st.getBirth()+"成绩:"+st.getScore());
    51         }*/
    52       //4.findBySname
    53        /* Student findStudent=iStudentDAO.findBySname("caocao");
    54         System.out.println(findStudent.getBirth());*/
    55         
    56         
    57         session.commit();
    58         session.close();
    59         
    60     }
    61     
    62 
    63 }
    seesion代码

    主要是前代码与后代码。

  • 相关阅读:
    链表--判断一个链表是否为回文结构
    矩阵--“之”字形打印矩阵
    二叉树——平衡二叉树,二叉搜索树,完全二叉树
    链表--反转单向和双向链表
    codeforces 490C. Hacking Cypher 解题报告
    codeforces 490B.Queue 解题报告
    BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
    codeforces 488A. Giga Tower 解题报告
    codeforces 489C.Given Length and Sum of Digits... 解题报告
    codeforces 489B. BerSU Ball 解题报告
  • 原文地址:https://www.cnblogs.com/yyy88168/p/3202642.html
Copyright © 2011-2022 走看看