springMVC-router工程操作sqlite数据库

时间:2022-07-11 11:10:47
sqlite数据库是一款全面支持SQL的轻量级数据库,本文接上一篇介绍的springMVC-router工程来实现对sqlite数据库的集成操作;


1、持久化数据配置导入

在DispatcherServlet配置文件story-servlet.xml中导入持久化数据配置文件:

<import resource="classpath:storyconfig/storyPersistent.xml"/>

2、配置storyPersistent.xml——配置数据源

在storyPersistent.xml中配置Spring操作数据库所依赖的数据源,配置完成即可以通过DataSource获取到数据库连接,操作数据库:

<bean id="storyDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.sqlite.JDBC</value>
</property>
<property name="url">
<value>jdbc:sqlite:dbhome/storyDb.db</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>021217</value>
</property>
</bean>
url配置的相对路径是以配置的working directory目录为参考,storysDb.db放在workspace/dbhome目录下,双击server,点击Open launch configuration:

springMVC-router工程操作sqlite数据库

服务器的working directory配置为即可:

springMVC-router工程操作sqlite数据库


3、配置storyPersistent.xml——配置SqlSessionFactory

<!-- 创建SqlSessionFactory -->
<bean id="storySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--指定数据源-->
<property name="dataSource" ref="storyDataSource"/>
<!-- 指定sqlMapConfig总配置文件,具体见7-->
<!-- <property name="configLocation" value="classpath:storyconfig/storySqlMapConfig.xml"/>-->
<!--指定实体类映射文件,可以同时指定某一包以及子包下面的所有配置文件 -->
<property name="mapperLocations" value="classpath:storysqlmapper/*.xml"/>
<!--该属性可以给包中的类注册别名,注册后可以直接使用类名,而不用使用全限定的类名 (就是不用包含包名) ,该属性可以配置多个,可以用逗号进行分割-->
<property name="typeAliasesPackage" value="com.feyn.story.dao"/>
</bean>

4、配置storysPersistent.xml——配置MapperScannerConfigurer

<!--配置此项后无需自己实现dao, 只要提供接口和xml映射即可,xml映射即上面配置的mapperLocations目录下的所有xml -->
<bean id="storyMapperScannerConfigurer"
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="storySqlSessionFactory" />
<property name="basePackage" value="com.feyn.story.dao" />
</bean>


5、创建用于访问数据库的DAO类和访问对象Entity类

此处创建用户类User和访问数据库的DAO类UserDao,其中UserDao以接口实现,具体的接口实现以mybatis mapper的形式实现:

springMVC-router工程操作sqlite数据库

代码实现如下:

UserDao接口

package com.feyn.story.dao;

import java.util.Map;

import org.springframework.stereotype.Repository;

import com.feyn.story.entity.User;

@Repository("userDao")
public interface UserDao {
public User getUserById(Map param);
}
User类

package com.feyn.story.entity;

import com.alibaba.fastjson.annotation.JSONField;

public class User {

private Integer id;

private String name;

public Integer getId() {
return id;
}

@JSONField(name="ID")
public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


6、配置storysqlmapper映射关系
使用SQLiteStudio在工程下的workspace/dbhome/目录下创建数据库storyDb.db,并创建表tUser,新增两条测试用数据:

springMVC-router工程操作sqlite数据库

在storysqlmapper目录下新建user_mapper.xml文件,添加UserDao提供的接口对应的sql映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.feyn.story.dao.UserDao"><!--相应的DAO接口类-->
<!--select对应的方法、入参类型及返回值类型-->
<select id="getUserById" parameterType="java.util.Map"
resultType="com.feyn.story.entity.User">
<!--执行的sql语句-->
select
*
from
tUser
where
ID= #{ID}
</select>
</mapper>


工程目录如下:

springMVC-router工程操作sqlite数据库

附:

名词解释:
SqlSessionFactoryBean:MyBatis为Spring提供的用于创建SqlSessionFactory的类;
SqlSessionFactory:创建SqlSession实例的工厂;
SqlSession:用于执行持久化操作的对象,类似于jdbc中的Connection;

依赖的工具和jar包:
sqlitestudio-3.1.1
http://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.20           fastjson-1.2.20.jar
http://mvnrepository.com/artifact/org.mybatis/mybatis-spring           mybatis-spring-1.3.0.jar
https://bitbucket.org/xerial/sqlite-jdbc/downloads                              sqlite-jdbc-3.14.2.1.jar
https://github.com/mybatis/mybatis-3/releases                                 mybatis-3.4.1.jar
mybatis- spring1.3.0需要和mybatis 3.4.1版本相匹配。