ibatis集成Sqlite:小数据库也有大作用
一、简介
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 }