Mybatis-實現增刪改查

通過Mybatis持久化框架實現對數據庫表的增刪改查的簡單例子

(個人心得:我感覺學習一個框架可以先去了解它大致的運行流程,然後再去學習其填充的東西,這樣更加容易理解而且在學的過程中也會聯繫起來。不然一開始就看框架的一些詳細解釋感覺好難懂)

StyleCategory實體類

package com.mybatis.entity;


/**
 * @author lyx
 *	
 * 2015-9-2下午7:07:57
 *
 *com.mybatis.entity.StyleCategory
 *
 */
public class StyleCategory {

	private int styleId;
	private String styleName;
	
	public int getStyleId() {
		return styleId;
	}
	public void setStyleId(int styleId) {
		this.styleId = styleId;
	}
	public String getStyleName() {
		return styleName;
	}
	public void setStyleName(String styleName) {
		this.styleName = styleName;
	}
	public StyleCategory(int styleId, String styleName) {
		super();
		this.styleId = styleId;
		this.styleName = styleName;
	}
	public StyleCategory(String styleName) {
		super();
		this.styleName = styleName;
	}
	public StyleCategory() {
		super();
	}
	
	
}

styleMapper.xml (sql映射文件)

<?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.mybatis.entity.StyleMapper">

	<!-- sql標籤 表示可以被其他語句複用的SQL塊-->
	<sql id="queryFields">
		styleId,styleName
	</sql>
	
	<!--  -->
	<resultMap type="StyleCategory" id="styleMap">
		
		<!-- 主鍵映射 -->
		<id property="styleId" column="styleId" javaType="int" />
		<!-- 數據庫字段到實體類屬性的映射 -->
		<result property="styleName" column="styleName"/>
		
	</resultMap>
	
	
	
	<!-- 根據style查詢 -->
	<select id="getStyleById" parameterType="int" resultType="StyleCategory" >
		select
			<include refid="queryFields"></include>
		from STYLE_CATEGORY where styleId=#{styleId}
	</select>
	 
	 <!-- 查詢全部 -->
	 <select id="queryAllInfo" resultType="StyleCategory" resultMap="styleMap">
		select 
		*
		 from STYLE_CATEGORY
	</select>
	 
	 
	<!-- 插入  -->
	<!-- 如果使用的是表中自定義的主鍵就不需要的添加 useGeneratedKeys="true" 否則會報錯:列名無效,Error getting generated key or setting result to parameter object-->
	<!-- 設置是否使用JDBC的getGenereatedKeys方法獲取主鍵並賦值到keyProperty設置的領域模型屬性中。MySQL和SQLServer執行auto-generated key field,
		因此當數據庫設置好自增長主鍵後,可通過JDBC的getGeneratedKeys方法獲取。但像Oralce等不支持auto-generated key field的數據庫就不能用這種方法獲取主鍵了 -->
	 <insert id="addStyleInfo" parameterType="StyleCategory"  keyProperty="styleId">
		<!-- <selectKey resultType="StyleCategory" order="BEFORE" keyProperty="styleId">
			 select SEQUENCE_STYLECATEGORY.nextval as STYLEID from dual; 
		</selectKey> -->
		
		insert into STYLE_CATEGORY (styleId,styleName) values (SEQUENCE_STYLECATEGORY.nextval,#{styleName})
	</insert>
	
	<!-- 更新 -->
	<update id="updateStyleInfo" parameterType="StyleCategory" >
		update STYLE_CATEGORY set styleName=#{styleName} where styleId=#{styleId}
	
	</update>
	 
	<!-- 刪除 -->
	<delete id="deleteStyleInfoById" parameterType="int">
		delete  from STYLE_CATEGORY where styleId =#{styleId}
	</delete>

	
    
</mapper>

mybatis主配置文件

<?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>

	<!-- 設置別名 -->
	<!-- typeAliases標籤 是寫實體類的別名,寫了之後可以在寫類的映射文件例如<select>標籤中的屬性就可以不用寫實體的具體路徑直接用別名 -->
	 <typeAliases>
		<typeAlias type="com.mybatis.entity.StyleCategory" alias="StyleCategory"/>
	</typeAliases> 
	
	
	<!-- 數據庫配置 -->
	
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"></transactionManager>
				<dataSource type="POOLED">
					<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
					<property name="driver"  value="oracle.jdbc.driver.OracleDriver"></property>
					<property name="username" value="lyx"></property>
					<property name="password" value="lyx"></property> 				
				</dataSource>		
		</environment>
	</environments>
	
	<!-- 映射文件 -->
	<mappers>
		<mapper resource="mapper/styleMapper.xml"/>
	</mappers>
	
	
  
</configuration>

測試類

package test;

import java.io.IOException;
import java.io.Reader;
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.mybatis.entity.StyleCategory;

public class MainTest {

	public  static void main(String[] args) throws IOException
	{
		//讀取配置文件
		Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
		
		SqlSessionFactory sqlSession =new SqlSessionFactoryBuilder().build(reader);
		
		//打開session會話
		SqlSession	session = sqlSession.openSession();
		
		
		//查詢
		StyleCategory style = session.selectOne("com.mybatis.entity.StyleMapper.getStyleById",2);
		System.out.println("style:"+style.getStyleId()+","+style.getStyleName());
		
	
		//刪除
		int deleteNum=session.delete("com.mybatis.entity.StyleMapper.deleteStyleInfoById",22);
		
		if(deleteNum>0)
		{
			System.out.println( deleteNum +"刪除成功!");
		}
	
		
		//更新
		StyleCategory updateStyle = new StyleCategory(2,"劉育新");
		
		int updateNum=session.update("com.mybatis.entity.StyleMapper.updateStyleInfo",updateStyle);
		
		if(updateNum>0)
		{
			System.out.println( updateNum +"更新成功!");
		}
		
		
		//插入數據
		StyleCategory insertStyle = new StyleCategory("大中華");
		int insertNum =session.insert("com.mybatis.entity.StyleMapper.addStyleInfo",insertStyle);
		if(insertNum>0)
		{
			System.out.println(insertNum+"插入成功");
		}
		
		
		//查詢全部
		List<StyleCategory> list=session.selectList("com.mybatis.entity.StyleMapper.queryAllInfo");
		for (StyleCategory styleCategory : list) {
			System.out.println(styleCategory.getStyleId()+":"+styleCategory.getStyleName());
		}
		
		//提交session會話,否則操作數據庫無效
		session.commit();
		
	}
}

源代碼下載:http://download.csdn.net/detail/u013147600/9074495

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章