ibatis集成Sqlite:小数据库也有大作用
作者: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配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC">
<!-- 数据源 -->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="org.sqlite.JDBC" />
<property name="JDBC.ConnectionURL" value="jdbc:sqlite:test.db" />
<property name="JDBC.Username" value="" />
<property name="JDBC.Password" value="" />
</dataSource>
</transactionManager>
<!--实体的映射文件 -->
<sqlMap resource="com/loadfate/domain/User.xml" />
</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配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!--别名 -->
<typeAlias alias="User" type="com.loadfate.domain.User" />
<!--查询全部用户 -->
<select id="selectAllUser" resultClass="User">
select * from user
</select>
<!--通过Id查询,参数为int时,使用id取值 -->
<select id="selectUserById" parameterClass="int" resultClass="User">
select * from user where userid=#id#
</select>
<!--添加用户 -->
<insert id="addUser" parameterClass="User">
insert into user(username,password) values (#username#,#password#)
</insert>
<!--删除用户 -->
<delete id="deleteUserById" parameterClass="int">
delete from user where userid=#id#
</delete>
<!--更改用户 -->
<update id="updateUser" parameterClass="User">
update user set username=#username#,password=#password# where userid=#userid#
</update>
</sqlMap>
四、实现详解
1、IbatisUtil
private static SqlMapClient sqlMapClient = null;
static {
try {
//加载配置文件
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private IbatisUtil() {
}
public static SqlMapClient getSqlMapClient() {
return sqlMapClient;
}
2、UserDao
SqlMapClient sqlMapClient = IbatisUtil.getSqlMapClient();
// 添加用户
public void addUser(User user) {
try {
sqlMapClient.insert("addUser", user);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新用户
public void updateUser(User user) {
try {
sqlMapClient.update("updateUser", user);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除用户
public void deleteUser(User user) {
try {
sqlMapClient.insert("deleteUserById", user.getUserid());
} catch (SQLException e) {
e.printStackTrace();
}
}
// 获取所有用户
@SuppressWarnings("unchecked")
public List<User> getAllUsers() {
List<User> users = null;
try {
users = sqlMapClient.queryForList("selectAllUser");
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
// 通过id获取用户
public User getUser(int userid) {
User user = null;
try {
user = (User) sqlMapClient.queryForObject("selectUserById", userid);
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
3、Test
public static void main(String[] args) {
User user=new User();
user.setUsername("张三");
user.setPassword("123456");
UserDao userDao=new UserDao();
userDao.addUser(user);
User user2=userDao.getUser(1);
System.out.println(user2.getUsername());
}
五、下载地址
项目文件夹:ibatis4sqlite
下载地址:http://pan.baidu.com/s/1bn1Y6BX
如果有什么疑问或者建议,请联系我
ibatis集成Sqlite:小数据库也有大作用的更多相关文章
- ORM数据库框架 SQLite 常用数据库框架比较 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android SQLite轻量级数据库(简单介绍)
SQLite它是相当于嵌入到安卓里的一个小数据库吧, 它也可以使用SQL语句进行数据库的增删改查操作,但是是SQL1992的语句. 然后SQLite也有自己的语句,但是学过SQL的应该都会发现,它比较 ...
- SQLite/嵌入式数据库
SQLite/嵌入式数据库 的项目要么不使用数据库(一两个文配置文件就可以搞定),要么就会有很多的数据,用到 postgresql,操练sqlite的还没有.现在我有个自己的小测试例子,写个数据库对比 ...
- 关于PDF.NET开发框架对Mysql Sqlite PostgreSQL数据库分页支持的个人看法
关于PDF.NET开发框架的名字由来 在设计www.pwmis.com站点的时候,考虑到架构的兼容性和将来升级的可能性,最重要的是没有足够的时间去为网站添加和维护很多复杂的程序,所以在借鉴前人成功经 ...
- nodejs集成sqlite
正在物色node上面的轻量级嵌入式数据库,作为嵌入式数据库的代表,sqlite无疑是个理想的选择方案.npm上集成sqlite的库主要有两个——sqlite3和realm. realm是一个理想的选择 ...
- Eclipse rap 富客户端开发总结(11) : rcp/rap与spring ibatis集成
1. rcp/rap 与 spring 集成 Activator 是rcp/rap 启动时需要加载的类, 只需要加载一遍,所以与spring 集成的时候一般是在这个类里面加载spring 的Appli ...
- Unity3D游戏开发之SQLite让数据库开发更简单
各位朋友大家好.欢迎大家关注我的博客,我是秦元培,我是博客地址是http://blog.csdn.net/qinyuanpei.在经历了一段时间的忙碌后,博主最终有时间来研究新的东西啦,今天博客向和大 ...
- sqlite嵌入式数据库C语言基本操作(2)
:first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px ...
- sqlite嵌入式数据库C语言基本操作(1)
sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...
随机推荐
- unity3d shader之Roberts,Sobel,Canny 三种边缘检测方法
方法其实都差不多,就是用两个过滤器,分别处理两个分量 Sobel算子 先说Sobel算子 GX为水平过滤器,GY为垂直过滤器,垂直过滤器就是水平过滤器旋转90度.过滤器为3x3的矩阵,将与图像作平面卷 ...
- Matlab与CCS的连接
1.CCS概述 Matlab 6.5(R13)或以上集成了CCSLink工具,可以支持CCS能够识别的任何板卡及其硬件DSP. 验证CCSLink是否在主机上安装成功,Matlab输入命令:help ...
- iOS 多线程学习笔记 —— GCD
本文复制.参考自文章:iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用 ,主要为了加强个人对知识的理解和记忆,不做他用.原作者声明: 著作权声明:本文由http:// ...
- Mac下搭建Eclipse Android开发环境
之前一直是用windows搞android开发,但windows这个性能也真是让人醉了,终于一狠心,砸锅卖铁买了Mac.然后就开始在Mac上搭建android开发环境, 其实也不麻烦,关键是找准下载地 ...
- offsetTop offsetLeft offsetWidth offsetHeight
document // Html 的容器对象. document.documentElement //html 对象 document.body // body 对象 $(document.docum ...
- XML文档部署到Tomcat服务器上总是加载出错
config.xnl 起初文档路径是在src/Dao/config.xml 在Dao目录下BaseDao类中,解析config.xml文件路径 path="/Dao/config.xml&q ...
- JavaScript DOM-Ready 机制
IE9开始和其他现代浏览器可以通过绑定DOMContentLoaded事件:IE9之前的的浏览器需要绑定onreadystatechange事件并等待readyState为"complete ...
- 关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
数据库一致性关闭下redo日志文件丢失的处理办法(归档和非归档都行) 1. inactive log 在一致性关闭后删除重启时可以在mount下(不丢失数据) alter database clea ...
- maven 私服 配置 转
3 . Nexus预置的仓库 点击左侧 Repositories 链接,查看 Nexus 内置的仓库: Nexus 的仓库分为这么几类: hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件( ...
- android生成二维码
新建项目 布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别. 首先需要一个谷歌的一个jar包 activi ...