zoukankan      html  css  js  c++  java
  • MyBatis学习笔记(3)—— 利用mybatis灌入假数据

      由于第三方厂商未能按时提供实时数据,故需要纯手动导入一些实时数据,用于统计分析。正好最近自己学习了mybatis 。因此使用mybatis 配置一个select.insert 的简单操作语句,用于灌入实时数据。

      业务表

        Ems_Standard_FormulaRelation【配置表,主要提供实时表的unitId,mediaId,standardId】

        Ems_StandardRuntime_Hour【实时表】

      准备工作

        数据库我用的是sqlserver 2008 r2

        1、在lib 中导入所需要的jar包

          

        2、在Referenced Libraries 中添加 jar包。

          

        3、配置mybatis 的config 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      <!-- MyBatis针对SqlServer进行的配置  -->
      <typeAliases>
      <!-- 定义javabean -->
        <typeAlias alias="formulaRelation" type="com.authority.model.Ems_Standard_FormulaRelation"/>
        <typeAlias alias="runtimeHour" type="com.authority.model.Ems_StandardRuntime_Hour"/>
      </typeAliases>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
            <property name="url" value="jdbc:sqlserver://10.18.14.221:1433;DatabaseName=ICPSystem"/>
            <property name="username" value="sa"/> 
            <property name="password" value="3333"/>
          </dataSource>
        </environment>
        </environments>
        <!-- 定义配置sql xml的文件路径 -->
          <mappers>
        <mapper resource="com/authority/mapper/formulaRelation.xml"/>
        <mapper resource="com/authority/mapper/runtimeHour.xml"/>
      </mappers>
    
      </configuration>

          4、bean文件

    Ems_Standard_FormulaRelation:

    package com.authority.model;
    
    public class Ems_Standard_FormulaRelation {
    	
    	private int id;
    	
    	private int standardId;
    	
    	private String unitId;
    	
    	private String mediaId;
    	
    	private String formulaId;
    	
    	private String formulaText;
    
    	@Override
    	public String toString() {
    		return "Ems_Standard_FormulaRelation [id=" + id + ", standardId=" + standardId + ", unitId=" + unitId
    				+ ", mediaId=" + mediaId + ", formulaId=" + formulaId + ", formulaText=" + formulaText + "]";
    	}
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public int getStandardId() {
    		return standardId;
    	}
    
    	public void setStandardId(int standardId) {
    		this.standardId = standardId;
    	}
    
    	public String getUnitId() {
    		return unitId;
    	}
    
    	public void setUnitId(String unitId) {
    		this.unitId = unitId;
    	}
    
    	public String getMediaId() {
    		return mediaId;
    	}
    
    	public void setMediaId(String mediaId) {
    		this.mediaId = mediaId;
    	}
    
    	public String getFormulaId() {
    		return formulaId;
    	}
    
    	public void setFormulaId(String formulaId) {
    		this.formulaId = formulaId;
    	}
    
    	public String getFormulaText() {
    		return formulaText;
    	}
    
    	public void setFormulaText(String formulaText) {
    		this.formulaText = formulaText;
    	}
    	
    }
    

    Ems_StandardRuntime_Hour:

    package com.authority.model;
    
    public class Ems_StandardRuntime_Hour {
        
        private int id;
        
        private int standardId;
        
        private String unitId;
        
        private String formulaValue;
        
        public String getFormulaValue() {
            return formulaValue;
        }
    
        public void setFormulaValue(String formulaValue) {
            this.formulaValue = formulaValue;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public int getStandardId() {
            return standardId;
        }
    
        public void setStandardId(int standardId) {
            this.standardId = standardId;
        }
    
        public String getUnitId() {
            return unitId;
        }
    
        public void setUnitId(String unitId) {
            this.unitId = unitId;
        }
    
        public String getMediaId() {
            return mediaId;
        }
    
        public void setMediaId(String mediaId) {
            this.mediaId = mediaId;
        }
    
        public String getCaculateTime() {
            return caculateTime;
        }
    
        public void setCaculateTime(String caculateTime) {
            this.caculateTime = caculateTime;
        }
    
        public Double getCaculateValue() {
            return caculateValue;
        }
    
        public void setCaculateValue(Double caculateValue) {
            this.caculateValue = caculateValue;
        }
    
        public int getSortIndex() {
            return sortIndex;
        }
    
        public void setSortIndex(int sortIndex) {
            this.sortIndex = sortIndex;
        }
    
        private String mediaId;
        
        private String caculateTime;
        
        private Double caculateValue;
        
        private int sortIndex;
    }

          5、配置sql xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.authority.model">
        <select id="getFormula" resultType="com.authority.model.Ems_Standard_FormulaRelation">
            select * from Ems_Standard_FormulaRelation
        </select>
    </mapper>

        

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.authority.model">
        <insert id="insertRuntime" parameterType="com.authority.model.Ems_StandardRuntime_Hour">
            insert into Ems_StandardRuntime_Hour (standardId,UnitId,MediaId,FormulaValue,
            CaculateValue,CaculateTime,SortIndex) VALUES (#{standardId},#{unitId},#{mediaId},
            #{formulaValue},#{caculateValue},#{caculateTime},#{sortIndex})
        </insert>
    </mapper>

            6、main方法。用于提交

    package com.authority.connection;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import com.authority.model.Ems_StandardRuntime_Hour;
    import com.authority.model.Ems_Standard_FormulaRelation;
    
    public class DataAccess {
    	
    	public static void main(String[] args) throws IOException {
    		
    		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
    		String resource = "config.xml";
    		Reader reader = Resources.getResourceAsReader(resource); 	 	
    		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    		SqlSession session = sessionFactory.openSession();
    		String sqlStatement = "com.authority.mapper.formulaRelation.getFormula";
    		String insertStatement = "com.authority.mapper.runtimeHour.insertRuntime";
    		@SuppressWarnings("unchecked")
    		List<Ems_Standard_FormulaRelation> relationlist = session.selectList(sqlStatement);
    		//单例的日期对象
    		Calendar cld = Calendar.getInstance();
    		//统计数据的时间单位是每小时。这个区间是10年的数据
    		for (int i = 0; i < 24 * 365 * 10; i++) {
    			//每次循环将当前时间的小时+1
    			cld.set(Calendar.HOUR, cld.get(Calendar.HOUR)+1);	
    			for (Ems_Standard_FormulaRelation obj : relationlist) {
    				Ems_StandardRuntime_Hour runtime = new Ems_StandardRuntime_Hour();
    				runtime.setCaculateTime(df.format(cld.getTime()));
    				runtime.setCaculateValue(Math.random());
    				runtime.setMediaId(obj.getMediaId());
    				runtime.setStandardId(obj.getStandardId());
    				runtime.setUnitId(obj.getUnitId());
    				runtime.setStandardId(obj.getStandardId());
    				runtime.setFormulaValue(obj.getFormulaId());
    				int m = session.insert(insertStatement, runtime);
    				System.out.println(m);
    			}	
    		}
    		session.commit();
    	}
    }
    

      session.commit,我在测试过程中,必须加上这句话。否则会导致数据表为空。具体实现原理。还是需要跟源码看看的。不过mybatis 确实要比hibernate灵活度上高上不少。我个人还是喜欢比较直观的sql语句。

  • 相关阅读:
    GetEnumName 枚举名称 字符串
    拖拽文件
    小米手机Root 刷机
    微软语言 中文 英文 中英文
    MTP
    MD5加密算法全解析
    ORA-28000: the account is locked
    HTTP状态码
    HTTP 消息结构
    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • 原文地址:https://www.cnblogs.com/cklovefan/p/5436847.html
Copyright © 2011-2022 走看看