手机版
你好,游客 登录 注册
背景:
阅读新闻

Java实战应用:MyBatis实现单表的增删改

[日期:2014-06-20] 来源:Linux社区  作者:dreamfly2014 [字体: ]

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单表的增删改:

Java实战应用: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

linux
相关资讯       MyBatis 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款