zoukankan      html  css  js  c++  java
  • 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)数据库结果

     
     
  • 相关阅读:
    Go从入门到精通——Go语言中程序文件的组织方法
    Go从入门到精通——怎样查看 Go 语言的文档
    AU篇——处理人声混BGM_(尽可能)去BGM提取人声
    【漏洞分析】DDOS攻防分析(一)——DNS篇
    【网络安全设备系列】15、安全网关/统一威胁管理(UTM)
    【网络安全设备系列】14、堡垒机
    【网络安全设备系列】13、网页防篡改
    【网络安全设备系列】12、态势感知
    【网络安全设备系列】11、抗DDOS设备
    【网络安全设备系列】10、安全审计系统
  • 原文地址:https://www.cnblogs.com/haimishasha/p/5710615.html
Copyright © 2011-2022 走看看