作者:Vinkn 来自http://www.cnblogs.com/Vinkn/

一、简介

  Ibatis简介:

  Ibatis是一个类似于Hibernate的数据库ORM(对象关系映射,通俗点就是将数据库表的一行与对象之间的转换),但是又不同于自动化的Hibernate,他是一个半自动的ORM,需要自己写sql语句,通过ORM框架,让你不再去自己加载数据库驱动,建立连接...

  sqlite简介:

  这是一个小型的数据库,使用它不需要安装,也仅仅只有一个数据文件(缺点是没有加密功能)。

简介百度一下,很多,简单的入门教程也很多,本片着重讲解Ibatis与sqlite集成。

二、环境搭建

1、创建数据库文件

  在建立项目之前推荐先建好数据库文件,建好里面的表字段,推荐使用工具SQLite DataBase Browser。

2、建立项目与导包  建立一个项目java project,将需要的两个包放到lib目录下,添加到环境中。

  ibatis-2.3.4.726.jar

  sqlite-jdbc-3.7.2.jar

三、配置文件

1、Ibatis配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
  3. "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
  4. <sqlMapConfig>
  5. <!-- 使用JDBC的事务管理 -->
  6. <transactionManager type="JDBC">
  7. <!-- 数据源 -->
  8. <dataSource type="SIMPLE">
  9. <property name="JDBC.Driver" value="org.sqlite.JDBC" />
  10. <property name="JDBC.ConnectionURL" value="jdbc:sqlite:test.db" />
  11. <property name="JDBC.Username" value="" />
  12. <property name="JDBC.Password" value="" />
  13. </dataSource>
  14. </transactionManager>
  15. <!--实体的映射文件 -->
  16. <sqlMap resource="com/loadfate/domain/User.xml" />
  17. </sqlMapConfig>

JDBC.ConnectionURL在不同环境下配置不同
Ⅰ、Java Project中:

  jdbc:sqlite:test.db为项目路径下。

Ⅱ、Web项目中:

  数据库文件在src中时:             jdbc:sqlite::resource:upgradeserver.db
  数据库文件在windows系统中时:     jdbc:sqlite:/D:/upgradeserver.db
  数据库文件在linux路径中时:       jdbc:sqlite://home/zwq/upgradeserver.db

2、mapper配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
  3. "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  4.  
  5. <sqlMap>
  6. <!--别名 -->
  7. <typeAlias alias="User" type="com.loadfate.domain.User" />
  8. <!--查询全部用户 -->
  9. <select id="selectAllUser" resultClass="User">
  10. select * from user
  11. </select>
  12. <!--通过Id查询,参数为int时,使用id取值 -->
  13. <select id="selectUserById" parameterClass="int" resultClass="User">
  14. select * from user where userid=#id#
  15. </select>
  16. <!--添加用户 -->
  17. <insert id="addUser" parameterClass="User">
  18. insert into user(username,password) values (#username#,#password#)
  19. </insert>
  20. <!--删除用户 -->
  21. <delete id="deleteUserById" parameterClass="int">
  22. delete from user where userid=#id#
  23. </delete>
  24. <!--更改用户 -->
  25. <update id="updateUser" parameterClass="User">
  26. update user set username=#username#,password=#password# where userid=#userid#
  27. </update>
  28. </sqlMap>

四、实现详解

1、IbatisUtil

  1. private static SqlMapClient sqlMapClient = null;
  2. static {
  3. try {
  4. //加载配置文件
  5. Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
  6. sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
  7. reader.close();
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11. }
  12.  
  13. private IbatisUtil() {
  14. }
  15.  
  16. public static SqlMapClient getSqlMapClient() {
  17. return sqlMapClient;
  18. }

2、UserDao

  1. SqlMapClient sqlMapClient = IbatisUtil.getSqlMapClient();
  2.  
  3. // 添加用户
  4. public void addUser(User user) {
  5. try {
  6. sqlMapClient.insert("addUser", user);
  7. } catch (SQLException e) {
  8. e.printStackTrace();
  9. }
  10. }
  11. // 更新用户
  12. public void updateUser(User user) {
  13. try {
  14. sqlMapClient.update("updateUser", user);
  15. } catch (SQLException e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. // 删除用户
  20. public void deleteUser(User user) {
  21. try {
  22. sqlMapClient.insert("deleteUserById", user.getUserid());
  23. } catch (SQLException e) {
  24. e.printStackTrace();
  25. }
  26. }
  27.  
  28. // 获取所有用户
  29. @SuppressWarnings("unchecked")
  30. public List<User> getAllUsers() {
  31. List<User> users = null;
  32. try {
  33. users = sqlMapClient.queryForList("selectAllUser");
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. }
  37. return users;
  38. }
  39.  
  40. // 通过id获取用户
  41. public User getUser(int userid) {
  42. User user = null;
  43. try {
  44. user = (User) sqlMapClient.queryForObject("selectUserById", userid);
  45. } catch (SQLException e) {
  46. e.printStackTrace();
  47. }
  48. return user;
  49. }

3、Test

  1. public static void main(String[] args) {
  2. User user=new User();
  3. user.setUsername("张三");
  4. user.setPassword("123456");
  5. UserDao userDao=new UserDao();
  6. userDao.addUser(user);
  7.  
  8. User user2=userDao.getUser(1);
  9. System.out.println(user2.getUsername());
  10. }

五、下载地址

项目文件夹:ibatis4sqlite

下载地址:http://pan.baidu.com/s/1bn1Y6BX

如果有什么疑问或者建议,请联系我

ibatis集成Sqlite:小数据库也有大作用的更多相关文章

  1. ORM数据库框架 SQLite 常用数据库框架比较 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Android SQLite轻量级数据库(简单介绍)

    SQLite它是相当于嵌入到安卓里的一个小数据库吧, 它也可以使用SQL语句进行数据库的增删改查操作,但是是SQL1992的语句. 然后SQLite也有自己的语句,但是学过SQL的应该都会发现,它比较 ...

  3. SQLite/嵌入式数据库

    SQLite/嵌入式数据库 的项目要么不使用数据库(一两个文配置文件就可以搞定),要么就会有很多的数据,用到 postgresql,操练sqlite的还没有.现在我有个自己的小测试例子,写个数据库对比 ...

  4. 关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法

    关于PDF.NET开发框架的名字由来  在设计www.pwmis.com站点的时候,考虑到架构的兼容性和将来升级的可能性,最重要的是没有足够的时间去为网站添加和维护很多复杂的程序,所以在借鉴前人成功经 ...

  5. nodejs集成sqlite

    正在物色node上面的轻量级嵌入式数据库,作为嵌入式数据库的代表,sqlite无疑是个理想的选择方案.npm上集成sqlite的库主要有两个——sqlite3和realm. realm是一个理想的选择 ...

  6. Eclipse rap 富客户端开发总结(11) : rcp/rap与spring ibatis集成

    1. rcp/rap 与 spring 集成 Activator 是rcp/rap 启动时需要加载的类, 只需要加载一遍,所以与spring 集成的时候一般是在这个类里面加载spring 的Appli ...

  7. Unity3D游戏开发之SQLite让数据库开发更简单

    各位朋友大家好.欢迎大家关注我的博客,我是秦元培,我是博客地址是http://blog.csdn.net/qinyuanpei.在经历了一段时间的忙碌后,博主最终有时间来研究新的东西啦,今天博客向和大 ...

  8. sqlite嵌入式数据库C语言基本操作(2)

    :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...

  9. sqlite嵌入式数据库C语言基本操作(1)

    sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...

随机推荐

  1. Unity3D学习笔记——选择Enemy

    一.步骤: 1.创建三个Cube,并将这三个Cube的Cube的Tag设为Enemy 2.导入第一人称视角的资源 3.创建名为Targeting的C#脚本 4.编写Targeting脚本,并将它附到第 ...

  2. 这几天阅读的shadowgun的几个shader

    直接从阅读时记录的笔记摘抄过来,写的比较随意. 1. MADFINGER-blinking-god-rays 除了可以用于实现太阳光线效果,还能调整参数让颜色随时间淡入淡出闪烁,能做出想灯光之类的效果 ...

  3. pecl/mongo is already installed

    sw-engine-cgi PHP MongoDB database drivermongodb database driver,数据库驱动;

  4. test、exec、match区别

    test.exec.match的简单区别 1.test test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = ...

  5. leetcode题解||Reverse Integer 问题

    problem: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 ...

  6. 移植QT到ZedBoard(制作运行库镜像) 交叉编译 分类: ubuntu shell ZedBoard OpenCV 2014-11-08 18:49 219人阅读 评论(0) 收藏

    制作运行库 由于ubuntu的Qt运行库在/usr/local/Trolltech/Qt-4.7.3/下,由makefile可以看到引用运行库是 INCPATH = -I/usr//mkspecs/d ...

  7. RSA算法详解及C语言实现

    RSA算法它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman.但 ...

  8. Eclipse启动 报错[Failed to load the JNI shared library jvm.dll

    准备要做java服务器,在安装开发环境时,启动Eclipse报错[Failed to load the JNI shared library jvm.dll] 研究了下,造成错误的原因是由于eclip ...

  9. javascript中涉及到汉字的比较

    在使用js中的"=="进行字符串的比较时,发现在英文情况下是ok的,但在中文比较时则不行了. 在网上搜索,提供了一个解决方法,使用 stringObject.localeCompa ...

  10. 使用SqlAlchemy时如何方便的取得dict数据、dumps成Json

    使用Sqlalchemy可以方便的从数据库读取出python对象形式的数据(吐槽:说实话对象形式也没多方便,还不如我之前从关系型数据库直接读取出dict形式的数据用起来方便,具体参见我以前的文章htt ...