打赏

mybatis_helloword(1)

摘录自:http://blog.csdn.net/y172158950/article/details/16979391

新的项目中用到mybatis,虽然不用自己写ORM的代码,但是借这个机会,学习一下。

本章目标:如题,helloWorld。

方法:在CSDN上下载一个demo,简单修改,能跑起来就OK。

1. 环境

  a)用到的jar:mybatis-3.0.5.jar ,MySQL-connector-java-5.0.8-bin.jar (只有一个jar,是不是很简单)

  b)mysql

  c)demo下载路径:http://download.csdn.net/detail/lihonghua168/3579586#comment

2.demo代码目录:

  a)configuration.xml :mysql连接配置;基本就2块,一个是数据库连接配置,二是映射实体,相关映射文件。
[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  3. <configuration>  
  4.     <typeAliases>  
  5.     <!-- 映射的实体 -->  
  6.         <typeAlias type="com.test.Goods"/>  
  7.     </typeAliases>  
  8.     <environments default="development">  
  9.         <environment id="development">  
  10.             <transactionManager type="JDBC"></transactionManager>  
  11.             <dataSource type="POOLED">  
  12.                 <property name="driver"  
  13.                     value="com.mysql.jdbc.Driver" />  
  14.                 <property name="url"  
  15.                     value="jdbc:mysql://127.0.0.1:3306/test" />  
  16.                 <property name="username" value="root" />  
  17.                 <property name="password" value="root" />  
  18.             </dataSource>  
  19.         </environment>  
  20.     </environments>  
  21.     <mappers>  
  22.         <!-- 数据连接成功后执行的对应实体映射文件数据库语句 -->  
  23.         <mapper resource="com/test/Mapper.xml" />  
  24.     </mappers>  
  25. </configuration>  
  b)Mapper.xml :sql语句配置文件;sql语句放配置文件,作用不多说,复用。
[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <mapper namespace="com.test.Mapper">  
  4.     <select id="selectGood" parameterType="int" resultType="Goods">  
  5.         select * from test where id =#{id}  
  6.     </select>  
  7.     <insert id="insertGood" parameterType="com.test.Goods" useGeneratedKeys="true" keyProperty="id"><!-- 后面两个表示主键自动生成的 -->  
  8.         insert into test (cateId , name , password , price , description , orderNo , updateTime) values(#{cateId} , #{name} , #{password} , #{price} , #{description} , #{orderNo} , #{updateTime});  
  9.     </insert>  
  10.     <delete id="deleteGood" parameterType="int">  
  11.         delete from test where id=#{id}  
  12.     </delete>  
  13.     <update id="updateGood" parameterType="com.test.Goods">  
  14.         update test set name=#{name},password=#{password},description=#{description},updateTime=#{updateTime} where id=#{id}  
  15.     </update>  
  16. </mapper>  
  c)Goods.java :结果集与表映射类;和hibernate不同,没有哪里写表与实体的映射关系(存疑)。
[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. package com.test;  
  2. import java.util.Date;  
  3.   
  4. /** 
  5.  * 实体,作为映射时的数据,所以所有字段的名称都必须和数据库里面的一样,不管什么数据库 
  6.  * 
  7.  *对应数据库表: 
  8.  create table test.test ( 
  9.             id bigint(10) primary key AUTO_INCREMENT, 
  10.             cateId varchar(100), 
  11.             name varchar(100), 
  12.             password varchar(100), 
  13.             price double, 
  14.             description varchar(100), 
  15.             orderNo int, 
  16.             updateTime datetime 
  17.   ); 
  18.  */  
  19. public class Goods {  
  20.     private long id;  
  21.     private String cateId;  
  22.     private String name;  
  23.     private String password;  
  24.     private double price;  
  25.     private String description;  
  26.     private int orderNo;  
  27.     private Date updateTime;  
  28.   
  29.     public String getCateId() {  
  30.         return cateId;  
  31.     }  
  32.   
  33.     public long getId() {  
  34.         return id;  
  35.     }  
  36.   
  37.     public void setId(long id) {  
  38.         this.id = id;  
  39.     }  
  40.   
  41.     public void setCateId(String cateId) {  
  42.         this.cateId = cateId;  
  43.     }  
  44.   
  45.     public String getName() {  
  46.         return name;  
  47.     }  
  48.   
  49.     public void setName(String name) {  
  50.         this.name = name;  
  51.     }  
  52.   
  53.     public double getPrice() {  
  54.         return price;  
  55.     }  
  56.   
  57.     public void setPrice(double price) {  
  58.         this.price = price;  
  59.     }  
  60.   
  61.     public String getDescription() {  
  62.         return description;  
  63.     }  
  64.   
  65.     public void setDescription(String description) {  
  66.         this.description = description;  
  67.     }  
  68.   
  69.     public int getOrderNo() {  
  70.         return orderNo;  
  71.     }  
  72.   
  73.     public void setOrderNo(int orderNo) {  
  74.         this.orderNo = orderNo;  
  75.     }  
  76.   
  77.     public Date getUpdateTime() {  
  78.         return updateTime;  
  79.     }  
  80.   
  81.     public void setUpdateTime(Date updateTime) {  
  82.         this.updateTime = updateTime;  
  83.     }  
  84.   
  85.     public String getPassword() {  
  86.         return password;  
  87.     }  
  88.   
  89.     public void setPassword(String password) {  
  90.         this.password = password;  
  91.     }  
  92. }  
d)Test1.java :dao类,测试类
[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. package com.test;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.Reader;  
  5. import java.util.Date;  
  6.   
  7. import org.apache.ibatis.io.Resources;  
  8. import org.apache.ibatis.session.SqlSession;  
  9. import org.apache.ibatis.session.SqlSessionFactory;  
  10. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  11.   
  12. public class Test1{  
  13.     public static void main(String args[]) throws IOException {  
  14.         String resource = "com/test/configuration.xml";//获得xml(Mybatis)数据库连接的连接  
  15.         Reader reader = Resources.getResourceAsReader(resource);//读取里面的文件  
  16.         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()  
  17.                 .build(reader);//创建session工厂  
  18.         SqlSession session = sessionFactory.openSession();//打开session  
  19.         new Test1().insert(session);  
  20.     }  
  21.     /** 
  22.      * 修改 
  23.      * @param session 
  24.      */  
  25.     public void update(SqlSession session){  
  26.         int falg=0;  
  27.         Goods g=new Goods();  
  28.         g.setId(1);  
  29.         g.setCateId("2");  
  30.         g.setName("huage");  
  31.         g.setPassword("huage");  
  32.         g.setDescription("He is me");  
  33.         g.setUpdateTime(new Date());  
  34.         falg=session.update("com.test.Mapper.updateGood", g);  
  35.         session.commit();  
  36.         if(falg==1){  
  37.             System.out.println("Data update successfully!");  
  38.         }else{  
  39.             System.out.println("Data update fail..");  
  40.         }  
  41.         session.close();  
  42.     }  
  43.       
  44.     /** 
  45.      * 删除 
  46.      * @param session 
  47.      */  
  48.     public void delete(SqlSession session){  
  49.         //session.delete("1");  
  50.         int falg=0;  
  51.         falg=session.delete("com.test.Mapper.deleteGood", 1);  
  52.         session.commit();  
  53.         if(falg==1){  
  54.             System.out.println("Data delete successfully!");  
  55.         }else{  
  56.             System.out.println("Data dalete fail..");  
  57.         }  
  58.         session.close();  
  59.           
  60.     }  
  61.       
  62.     /** 
  63.      * 插入数据 
  64.      * @param session 
  65.      */  
  66.     public void insert(SqlSession session){  
  67.         Goods g=new Goods();  
  68.         g.setCateId("2");  
  69.         g.setName("huage");  
  70.         g.setPassword("huage");  
  71.         g.setPrice(5);  
  72.         g.setDescription("He is me");  
  73.         g.setOrderNo(2);  
  74.         g.setUpdateTime(new Date());  
  75.         int flag=0;  
  76.         flag=session.insert("com.test.Mapper.insertGood",g);  
  77.         session.commit();//一定要提交才能插入数据  
  78.         if(flag==1){  
  79.             System.out.println("Data inserted successfully!");  
  80.         }else{  
  81.             System.out.println("Data inserted fails!");  
  82.         }  
  83.         session.close();  
  84.     }  
  85.     /** 
  86.      * 查询  
  87.      * @param session 
  88.      */  
  89.     public void select(SqlSession session){  
  90.         try {  
  91.             Goods goods = (Goods) session.selectOne("com.test.Mapper.selectGood", 1);//执行数据操作  
  92.               
  93.             System.out.println("good name is : " + goods.getName());  
  94.             System.out.println("description :="+goods.getDescription());  
  95.             System.out.println("orderNo :="+goods.getOrderNo());  
  96.             System.out.println("price :="+goods.getPrice());  
  97.             System.out.println("updateTiem :="+goods.getUpdateTime());  
  98.             System.out.println("id :="+goods.getId());  
  99.             System.out.println("password :="+goods.getPassword());  
  100.             System.out.println("cateid :="+goods.getCateId());  
  101.         } catch (Exception e) {   
  102.             e.printStackTrace();  
  103.         } finally {  
  104.             session.close();  
  105.         }  
  106.     }  
  107. }  
 e)Test1.java流程分析

    i. 通过Reader类读取configuration.xml类容,获取数据库连接配置及相关实体类、sql语句配置信息。

    ii. 依据Reader的信息创建SqlSessionFactory。(这2步在实际工程中调用一次即可)

    iii. 创建SqlSession,相当于JDBC的Connection

    iv. insert数据:封装了sql语句,封装了映射过程(update,remove,select过程类似)

         1)封装Goods实体。

         2)调用session.insert方法:2个参数,"com.test.Mapper.insertGood“,去Mapper.xml找下,insert语句已经写好了;g,实体

         3)commit,close连接。

  f)数据库结果

 
 
posted @ 2016-07-27 12:11  海米傻傻  阅读(180)  评论(0编辑  收藏  举报