根据传智播客ibatis视频教程编写的入门例子

来源:互联网 发布:色环电阻识别软件 编辑:程序博客网 时间:2024/05/01 16:22


http://blog.csdn.net/elifefly/article/details/2936421

IUserDAOImpl.java

  1. package com.elifefly;
  2. /*
  3.  * 说明:程序是根据传智播客ibatis视频教程编写的入门例子。
  4.  * 目的在于熟悉ibatis的基本原理和基本使用方法。
  5.  * 因而程序并没有过多的开发成一个系统,ibatis视频教程也没有做成系统的,也没有给任何源代码。
  6.  * 
  7.  * 开发环境:MyEclipse 6.0
  8.  * 数据库:MySQL5.0
  9.  * 
  10.  * 要添加的jar包:mysql-connector-java-3.1.10-bin.jar
  11.  * 和ibatis-2.3.3.720压缩包下的lib文件夹下的ibatis-2.3.3.720.jar
  12.  * 
  13.  * 测试使用,选中IUserDAOImpl.java文件,选择run as Java Application
  14.  */
  15. import java.io.IOException;
  16. import java.io.Reader;
  17. import java.sql.SQLException;
  18. import java.util.List;
  19. import com.ibatis.sqlmap.client.SqlMapClient;
  20. public class IUserDAOImpl implements IUserDAO
  21. {
  22.     private static SqlMapClient sqlMapClient = null;
  23.     
  24.     static
  25.     {
  26.         try
  27.         {
  28.             Reader reader = com.ibatis.common.resources.Resources.getResourceAsReader("com/elifefly/SqlMapConfig.xml");
  29.             sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
  30.             reader.close();
  31.             
  32.         } catch (IOException e)
  33.         {
  34.             // TODO Auto-generated catch block
  35.             e.printStackTrace();
  36.         }
  37.         
  38.     }
  39.     
  40. //添加用户
  41.     public void addUser(User user)
  42.     {
  43.         try
  44.         {
  45.             sqlMapClient.insert("insertUser",user);
  46.         } catch (SQLException e)
  47.         {
  48.             // TODO Auto-generated catch block
  49.             e.printStackTrace();
  50.         }
  51.     }
  52. //添加用户,获取自动增长的序列号,处理添加相同的userId情况
  53.     public void addUserBySequence(User user)
  54.     {
  55.         try
  56.         {
  57.             sqlMapClient.insert("insertUserBySequence",user);
  58.         } catch (SQLException e)
  59.         {
  60.             // TODO Auto-generated catch block
  61.             e.printStackTrace();
  62.         }
  63.     }
  64.     
  65. //删除用户
  66.     public void deleteUserById(int id)
  67.     {
  68.         try
  69.         {
  70.             System.out.println(sqlMapClient.delete("deleteUserById",102));
  71.             //如果打印出来的值大于0,说明删除成功
  72.             System.out.println("如果打印出来的值大于0,说明删除成功");
  73.             
  74.         } catch (SQLException e)
  75.         {
  76.             // TODO Auto-generated catch block
  77.             e.printStackTrace();
  78.         }
  79.     }
  80.     
  81. //查找所有用户
  82.     public List<User> queryAllUser()
  83.     {
  84.         List<User> userList = null;
  85.         
  86.         try
  87.         {
  88.             userList = sqlMapClient.queryForList("selectAllUser");
  89.         } catch (SQLException e)
  90.         {
  91.             // TODO Auto-generated catch block
  92.             e.printStackTrace();
  93.         }
  94.             
  95.         return userList;
  96.     }
  97.     
  98. //通过id查找用户
  99.     public User queryUserById(int id)
  100.     {
  101.         User user = null;
  102.         try
  103.         {
  104.             user = (User)sqlMapClient.queryForObject("selectUserById",id);
  105.         } catch (SQLException e)
  106.         {
  107.             // TODO Auto-generated catch block
  108.             e.printStackTrace();
  109.         }
  110.         
  111.         return user;
  112.     }
  113.     
  114. //模糊查询,通过用户名查找用户
  115.     public List<User> queryUserByName(String name)
  116.     {
  117.         List<User> userList = null;
  118.         try
  119.         {
  120.             userList = sqlMapClient.queryForList("selectUserByName",name);
  121.             
  122.         } catch (SQLException e)
  123.         {
  124.             // TODO Auto-generated catch block
  125.             e.printStackTrace();
  126.         }
  127.         return userList;
  128.     }
  129.     
  130. //修改用户
  131.     public void updateUser(User user2)
  132.     {
  133.         try
  134.         {
  135.             System.out.println(sqlMapClient.update("updateUserById",user2));
  136.             //如果打印出来的值大于0,说明更新成功
  137.             System.out.println("如果打印出来的值大于0,说明更新成功");
  138.         } catch (SQLException e)
  139.         {
  140.             // TODO Auto-generated catch block
  141.             e.printStackTrace();
  142.         }
  143.     }
  144.     
  145.     
  146.     public static void main(String[] args)
  147.     {
  148.         // TODO Auto-generated method stub
  149.         IUserDAOImpl iUserDAOImpl = new IUserDAOImpl();
  150.         
  151.         //1.测试queryAllUser()
  152.         System.out.println("1.测试queryAllUser()");
  153.         for(User user:iUserDAOImpl.queryAllUser())
  154.         {
  155.             System.out.println(user);
  156.             
  157.         }
  158.         
  159.         //2.测试queryUserById(int id)]
  160.         System.out.println("/n2.测试queryUserById(int id)");
  161.         System.out.println(iUserDAOImpl.queryUserById(1));
  162.         
  163.         //3.测试addUser(User user)
  164.         System.out.println("/n3.测试addUser(User user)");
  165.         User user = new User();
  166.         user.setUserId(102);
  167.         user.setUserName("elifefly");
  168.         user.setUserPassword("123456");
  169.         user.setUserFlag("超级管理员");
  170.         
  171.         iUserDAOImpl.addUser(user);
  172.         
  173.         System.out.println(iUserDAOImpl.queryUserById(102));
  174.         
  175.         
  176.         //4.测试deleteUserById(int id)
  177.         System.out.println("/n4.测试deleteUserById(int id)");
  178.         iUserDAOImpl.deleteUserById(102);
  179.         
  180.         
  181.         
  182.         //5.测试updateUser(User user)
  183.         System.out.println("/n5.测试updateUser(User user)");
  184.         User user2 = new User();
  185.         user2.setUserId(101);
  186.         user2.setUserName("myelifefly");
  187.         user2.setUserPassword("12345678");
  188.         user2.setUserFlag("超级");
  189.         
  190.         iUserDAOImpl.updateUser(user2);
  191.         System.out.println(iUserDAOImpl.queryUserById(101));
  192.         
  193.         
  194.         //6.测试List<User> queryUserByName(String name)
  195.         System.out.println("6.测试List<User> queryUserByName(String name)");
  196.         for(User user3:iUserDAOImpl.queryUserByName("e"))
  197.         {
  198.             System.out.println(user3);
  199.             
  200.         }
  201.         
  202.         
  203.         //7.测试addUserBySequence(User user)
  204.         System.out.println("/n7.测试addUserBySequence(User user)");
  205.         User user7 = new User();
  206.         user7.setUserId(100);
  207.         user7.setUserName("good");
  208.         user7.setUserPassword("123456");
  209.         user7.setUserFlag("test");
  210.         
  211.         iUserDAOImpl.addUserBySequence(user7);
  212.         
  213.         for(User user8:iUserDAOImpl.queryAllUser())
  214.         {
  215.             System.out.println(user8);
  216.             
  217.         }
  218.         
  219.         
  220.     }
  221.     
  222.     
  223.     
  224. }

SqlMapConfig.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMapConfig      
  3.     PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
  4.     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
  5. <sqlMapConfig>
  6. <properties resource="com/elifefly/SqlMap.properties" />
  7.   <!-- Configure a built-in transaction manager.  If you're using an 
  8.        app server, you probably want to use its transaction manager 
  9.        and a managed datasource -->
  10.   <transactionManager type="JDBC" >
  11.   
  12.     <dataSource type="SIMPLE">
  13.       <property value="${driver}" name="JDBC.Driver" />
  14.       <property value="${url}" name="JDBC.ConnectionURL" />
  15.       <property value="${username}" name="JDBC.Username" />
  16.       <property value="${password}" name="JDBC.Password" />
  17.     </dataSource>
  18.   </transactionManager>
  19.   
  20.   <sqlMap resource="com/elifefly/User.xml"/>
  21.   
  22.   <!-- List the SQL Map XML files. They can be loaded from the 
  23.        classpath, as they are here (com.domain.data...) -->
  24.   <!-- List more here...
  25.   <sqlMap resource="com/mydomain/data/Order.xml"/>
  26.   <sqlMap resource="com/mydomain/data/Documents.xml"/>
  27.   -->
  28. </sqlMapConfig>

 

SqlMap.properties

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/college
  3. username=root
  4. password=123456

User.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMap      
  3.     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
  4.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  5. <sqlMap>
  6. <typeAlias alias="User" type="com.elifefly.User" />
  7. <!-- 查找所有用户 -->
  8. <select id="selectAllUser" resultClass="User" >
  9. select * from user;
  10. </select>
  11. <!-- 通过id查找用户 -->
  12. <!-- parameterClass表示参数类型 -->
  13. <select id="selectUserById" parameterClass="int" resultClass="User">
  14. select * from user
  15. where userId = #userId#
  16. </select>
  17. <!-- 添加用户 -->
  18. <insert id="insertUser" parameterClass="User">
  19. insert into user(userId,userName,userPassword,userFlag)
  20. values(#userId#,#userName#,#userPassword#,#userFlag#);
  21. <!-- 注意这里的#userId#对应User.java中的get和set方法属性的,要与其对应,修改的时候要对应 -->
  22. </insert>
  23. <!-- 删除用户 -->
  24. <delete id="deleteUserById" parameterClass="int">
  25. delete  from user 
  26. where userId = #userId# 
  27. <!-- 特别注意:这个delete中的 #userId#可以改为任意的其他如 #Id#等,而在其他如select等语句不可行 -->
  28. </delete>
  29. <!-- 修改用户 -->
  30. <update id="updateUserById" parameterClass="User">
  31. update user
  32. set userName = #userName#,
  33.     userPassword = #userPassword#,
  34.     userFlag = #userFlag#
  35. where userId = #userId#
  36. </update>
  37. <!-- 模糊查询,通过用户名查找用户 -->
  38. <select id="selectUserByName" parameterClass = "String" resultClass = "User">
  39. select userId,userName,userPassword,userFlag 
  40. from user
  41. where userName like '%$userName$%'
  42. <!-- 非常注意:这个'%$userName$%'中的$符号和#的不同使用之处,$表示会用变量的只替换掉,用#是不行的,#是占位符 -->
  43. </select>
  44. <!-- 添加用户,获取自动增长的序列号,处理添加相同的userId情况 -->
  45. <insert id="insertUserBySequence" parameterClass = "User" >
  46. <selectKey resultClass = "int" keyProperty="userId" >
  47. SELECT @@IDENTITY as userId
  48. </selectKey>
  49. insert into user(userId,userName,userPassword,userFlag)
  50. values(#userId#,#userName#,#userPassword#,#userFlag#);
  51. </insert>
  52. </sqlMap>

User.java

  1. package com.elifefly;
  2. public class User
  3. {
  4.     //注意必须保证有一个无参数方法,否则出错。
  5.     //因为反射的时候调用的是无参数的方法
  6.     
  7.     private int userId = 0;
  8.     private String userName = null;
  9.     private String userPassword = null;
  10.     private String userFlag = null;
  11.     public int getUserId()
  12.     {
  13.         return userId;
  14.     }
  15.     public void setUserId(int userId)
  16.     {
  17.         this.userId = userId;
  18.     }
  19.     public String getUserName()
  20.     {
  21.         return userName;
  22.     }
  23.     public void setUserName(String userName)
  24.     {
  25.         this.userName = userName;
  26.     }
  27.     public String getUserPassword()
  28.     {
  29.         return userPassword;
  30.     }
  31.     public void setUserPassword(String userPassword)
  32.     {
  33.         this.userPassword = userPassword;
  34.     }
  35.     public String getUserFlag()
  36.     {
  37.         return userFlag;
  38.     }
  39.     public void setUserFlag(String userFlag)
  40.     {
  41.         this.userFlag = userFlag;
  42.     }
  43.     
  44.     
  45.     @Override
  46.     public String toString()
  47.     {
  48.         //重载toString方法,方便调用
  49.         String content = "userId=" + userId + "/tuserName=" + userName + "/tuserPassword=" +userPassword +"/tuserFlag=" +userFlag; 
  50.         return content;
  51.     }
  52.     
  53.     
  54.     
  55. }

IUserDAO.java

  1. package com.elifefly;
  2. import java.util.List;
  3. public interface IUserDAO
  4. {
  5.     //增删改查
  6.     
  7.     public void addUser(User user);
  8.     public void addUserBySequence(User user);
  9.     public void deleteUserById(int id);
  10.     public void updateUser(User user);
  11.     public List<User> queryAllUser();
  12.     public List<User> queryUserByName(String name);
  13.     public User queryUserById(int id);
  14.     
  15. }



 

0 0