使用Mybatis对MySql数据库进行操作实例

初学Mybatis,参考网络上的教程,自己做的个小练习,适合我这种刚入门的新手。
 
1.环境(数据库创建步骤省略)
MyEclipse 10      Mysql5.5     
 
 
2.新建项目,导入包
mybatis-3.2.3.jar
mysql-connector-java-5.1.24-bin.jar
ibatis-2.3.0.677.jar
 
3.创建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 
 6 <sqlMapConfig>
 7      <settings useStatementNamespaces ="true" />
 8      <transactionManager type ="JDBC">
 9             <dataSource type ="SIMPLE">
10                  <property name ="JDBC.Driver" value= "com.mysql.jdbc.Driver" />
11                  <property name ="JDBC.ConnectionURL" value= "jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8" />
12                  <property name ="JDBC.Username" value="root" />
13                  <property name ="JDBC.Password" value="root" />
14             </dataSource >
15      </transactionManager >
16      <sqlMap resource ="StudentMapper.xml" />
17          
18 </sqlMapConfig>
4.创建StudentMapper.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 
 6 <sqlMap >
 7      <typeAlias alias ="Student" type= "com.igaming.entity.Student" />
 8      <!--插入操作 -->
 9      <insert id ="insert" parameterClass="Student">
10            insert into Student(student_id, student_name, student_sex,
11            student_birthday, class_id)
12            values (#student_id#, #student_name#,
13            #student_sex#, #student_birthday#,
14            #class_id#)
15             <selectKey resultClass ="java.lang.String" keyProperty="student_id" >
16                 select last_insert_id() as id
17             </selectKey >
18      </insert >
19 
20 </sqlMap>
5.创建Student.java实例
 1 public class Student {
 2      private String student_id;
 3      private String student_name;
 4      private String student_sex;
 5      private Date student_birthday;
 6      private String class_id;
 7      
 8      public Student() {   }
 9 
10      public Student(String student_id, String student_name, String student_sex,Date student_birthday, String class_id) {
11             this. student_id = student_id;
12             this. student_name = student_name;
13             this. student_sex = student_sex;
14             this. student_birthday = student_birthday;
15             this. class_id = class_id;
16      }
17          // ..........(注:此处省略get,set方法)
18 }
6.编写测试类:
Demo.java
 
 1 public class Demo {
 2      static Reader rd = null;
 3      static SqlMapClient smc = null;
 4      /**
 5       * @param args
 6       * @throws IOException
 7       * @throws SQLException
 8       */
 9      public static void main(String[] args) throws IOException, SQLException {
10             rd = Resources.getResourceAsReader("SqlMapConfig.xml");
11             smc = SqlMapClientBuilder.buildSqlMapClient(rd);
12            
13             /* This would insert one record in Employee table. */
14            System. out.println( "Going to insert record.....");
15             //新增
16             insetInfo();
17            System. out.println( "Record Inserted Successfully ");
18 
19      }     
20      /**
21       * 新增
22       * @throws SQLException
23       */
24      public static void insetInfo() throws SQLException{
25            Student em = new Student( "10007", "张三", "男" , new Date(), "2");
26             smc.insert( "insert", em);
27      }
28 }
运行测试结果:

数据库:

 

查询操作:
在StudentMapper.xml配置文件中添加如下代码:
1      <!-- 查询操作 -->
2       <select id = "getAll" resultClass= "Student">
3            select * from Student
4       </select >
在Demo.java中编写查询方法:
 1       /**
 2       * 查询
 3       * @throws SQLException
 4       */
 5      public static void selectInfo() throws SQLException {
 6            List<Student> listStudentInfo = (List<Student>) smc.queryForList("getAll", null);          
 7             for (Student s : listStudentInfo) {
 8                      System. out.println(s.getStudent_id()+ "  "+s.getStudent_name()+"  "+s.getStudent_sex()+ "  "+s.getStudent_birthday()+"  "+s.getClass_id());
 9            }
10      }

 

测试结果:
 
更新数据库数据:
 
在StudentMapper.xml配置文件中添加如下代码:
1    <!-- ibatis更新操作 -->
2      <update id ="updateById" parameterClass="java.lang.String">
3            update Student set student_name=" Admol" where student_id=#student_id#
4      </update >
在Demo.java中编写测试方法:
1      /**
2       * 更新操作
3       * @throws SQLException
4       */
5      public static void updateById() throws SQLException{
6             smc.update( "updateById", "10002"); 
7      }  
测试结果如下:
 
删除操作:
 
在StudentMapper.xml配置文件中添加如下代码:
1  <!-- 删除操作 -->
2      <delete id ="deleteStudentByid" parameterClass="java.lang.String" >
3            delete from Student where student_id=#student_id#
4      </delete >
在Demo.java中编写测试方法:
1    /**
2       * 删除操作
3       * @throws SQLException
4       */
5      public static void deleteStudentByid() throws SQLException{
6             //删除 
7       int i=smc.delete("deleteStudentByid", "10004"); 
8       System.out.println("i="+i); 
9      } 

 

测试结果如下:

 

注意:
1.插入到数据库中乱码解决办法为:
jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
2.StudentMapper.xml中增删改查的id属性必须和Demo中方法insert() query() delete() update()中的值对应。

 

 

项目整体结构图:

 

 

 

 

 

posted @ 2015-01-25 13:49  Admol  阅读(670)  评论(0编辑  收藏  举报