歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java實戰應用:MyBatis實現單表的增刪改

Java實戰應用:MyBatis實現單表的增刪改

日期:2017/3/1 9:42:48   编辑:Linux編程

MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或注解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。

用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。

MyBatis插入時候獲取自增主鍵方法 http://www.linuxidc.com/Linux/2014-03/98965.htm

[Java][MyBatis]物理分頁實現 http://www.linuxidc.com/Linux/2014-04/99889.htm

一、首先建立項目的整體效果圖:

以下是MyBatis單表的增刪改:

二、項目代碼:

1)實體類:News中:

public class News {
private Integer id;
private String title;
private String content;
private Date pubDate;
private Integer typeId;
private String photo;
private String tname;
//get,set方式省去

2)dao層借口層的INewsDAO:

import java.util.List;
import java.util.Map;
import org.liky.vo.News;

public interface INewsDAO {

public void doCreate(News news) throws Exception;
public void doUpdate(News news) throws Exception;
public void doRemove(int id) throws Exception;
public List<News> findAll() throws Exception;
public News findById(int id) throws Exception;
public List<News> findAllSplit(Map<String, Object> map) throws Exception;
public int getAllCount(Map<String, Object> map) throws Exception;

}

3)dao層的實現,INewDAO.xml,正常不是myBatis,這裡是寫dao層的實現類的:myBatis的優勢也是在這裡,將sql語句抽調出來單獨寫入到一個xml中,便於管理數據庫。它是更接近於jdbc的,所以處理的速度很快,它是外網項目中需要用到框架。

<mapper namespace="org.liky.dao.INewsDAO">

<resultMap type="News" id="NewsResult">
<id column="id" property="id" />
<result column="title" property="title" />
<result column="content" property="content" />
<result column="pub_date" property="pubDate" />
<result column="type_id" property="typeId" />
<result column="photo" property="photo" />
</resultMap>

<insert id="doCreate" parameterType="News">
INSERT INTO news
(id,title,content,pub_date,type_id,photo) VALUES
(news_seq.nextVal,#{title},#{content},#{pubDate},#{typeId},#{photo})
</insert>

<update id="doUpdate" parameterType="News">
UPDATE news
SET title =
#{title},content=#{content},pub_date = #{pubDate},type_id =
#{typeId},photo=#{photo}
WHERE id = #{id}
</update>

<delete id="doRemove" parameterType="java.lang.Integer">
DELETE FROM news WHERE id =
#{id}
</delete>

<select id="findAll" resultMap="NewsResult">
SELECT * FROM news
</select>

<select id="findById" resultType="News" parameterType="java.lang.Integer">
SELECT
id,title,content,pub_date AS pubDate,type_id AS typeId,photo,tname FROM news n,news_type nt
WHERE id = #{id} AND n.type_id = nt.tid
</select>

<select id="findAllSplit" resultType="News" parameterType="java.util.Map">
SELECT temp.* FROM (SELECT
id,title,content,pub_date
AS pubDate,type_id
AS typeId,photo,ROWNUM rn
FROM news WHERE ${column}
LIKE #{keyword} AND
ROWNUM <= #{endNumber}) temp WHERE temp.rn >
#{startNumber}
</select>

<select id="getAllCount" resultType="int" parameterType="java.util.Map">
SELECT
COUNT(*) FROM news WHERE ${column} LIKE #{keyword}
</select>

</mapper>

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/103456p2.htm

Copyright © Linux教程網 All Rights Reserved