iT邦幫忙

DAY 25
1

java菜鳥的學習筆記系列 第 28

MyBatis使用-插入資料成功!(雖然這是很基本的功能....)

昨天分享失敗的經驗加上程式碼沒有註解,但今天我已經試成功了,而且是很蠢的錯誤,另外也試了一下generatekey的語法,今天只對Alarm.xml insert部份以及getAll已經是成功的部份跟大家分享並加上一些註解,另外個人MyBatis的確蠻適合小型應用的,設定簡單不會很複雜,目前官網部分還有http://www.mybatis.org/core/configuration.html#typeHandlers,typeHandler還不知道用在哪,明天有時間將開始研究Dynamic SQLhttp://www.mybatis.org/core/dynamic-sql.html

Note:不知道主辦單位可不可以發給我紀念衫,如果我有堅持到底的話.....
Alaram.xml

<?xml version="1.0" encoding="UTF-8"?>


 
<mapper namespace="Alarm">//mapper是連結javabean與資料庫互動的設定檔,包括欄位的mapping,查詢等
 														//namespace當專案多的時候再研究吧.....
    <resultMap id="result" type="Alarm"> //ResultMap就是像是ResultSet只是設定預先設定在XML裡而已...個人感覺
        <result property="id" column="id"/> //property指的是在javabean裡的屬性,而column就是在資料表的欄名
        <result property="aid" column="alarmid"/>
        <result property="refid" column="refid"/>
        <result property="des" column="description"/>
        <result property="state" column="state"/>
        <result property="sys" column="system"/>
    </resultMap> 
 
    <select id="getAll" resultMap="result"> //每一個查詢都要指定id,直接指定id呼叫,DAO程式碼會很簡化。
        SELECT * FROM Alarm                         //resultMap就是要指定要在哪裡個resultMap執行sql
    </select> //另外基本上可以有n的查詢只要id不一樣就可以了。
 
 	 <insert id="insert" parameterType="Alarm" useGeneratedKeys="true" keyProperty="id">
 	 //useGeneratedKeys屬性設定為true代表有自動遞增的欄位,而名稱就在keyProperty中設定
 	 //parameterType代表傳入的參數型態,可以是int, 可以是String,看適用場合(get某一欄等)
    INSERT INTO Alarm (refid, alarmid, description, state, system)
        VALUES (#{refid}, #{aid}, #{des}, #{state}, #{sys}) //取值的語法是#{變數名稱},也就是上面的property變數
    </insert>
</mapper>

AlarmDAO.java

package dao.Alarm;

import java.util.Iterator;
import java.util.List;

import mybatis.MyBatisConnFactory;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import read.GetDataFromFile;

import alarm.Alarm;

public class AlarmDAO {
			private SqlSessionFactory ssessfactory;
			public AlarmDAO(){
				ssessfactory = MyBatisConnFactory.getSsessfactory(); //建立SqlSessionFacotry
			}
				public List<Alarm> listAll(){
					SqlSession session = ssessfactory.openSession();//當然第一步就是取得session
					try{
						List<Alarm> alist= session.selectList("Alarm.getAll");//Alarm旨的是namespace,而.getAll指的是id
						return alist;                                                                    
					}finally{
						session.close(); //關閉session
					}
				}
				public void insert(){
					SqlSession session = ssessfactory.openSession();
					 
			        try {
			            GetDataFromFile gf= new GetDataFromFile();
			            List<Alarm> alist =gf.readFromExcel();
			            Iterator<Alarm> it=alist.iterator();
						while(it.hasNext()){
							session.insert("Alarm.insert", it.next()); //呼叫inert把Alarm物件依次寫入DB
							session.commit();
						}
			           
			        } finally {
			            session.close();
			        }
				}
			}
			

		

MySQL截圖:(830筆是正確的)

Excel截圖


上一篇
初用MyBatis-失敗
系列文
java菜鳥的學習筆記28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言