springMVC-router工程操作sqlite資料庫
1、持久化資料配置匯入
在DispatcherServlet配置檔案story-servlet.xml中匯入持久化資料配置檔案:
<import resource="classpath:storyconfig/storyPersistent.xml"/>
2、配置storyPersistent.xml——配置資料來源
在storyPersistent.xml中配置Spring操作資料庫所依賴的資料來源,配置完成即可以通過DataSource獲取到資料庫連線,操作資料庫:
url配置的相對路徑是以配置的working directory目錄為參考,storysDb.db放在workspace/dbhome目錄下,雙擊server,點選Open launch configuration:<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>
伺服器的working directory配置為即可:
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
5、建立用於訪問資料庫的DAO類和訪問物件Entity類<!--配置此項後無需自己實現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>
此處建立使用者類User和訪問資料庫的DAO類UserDao,其中UserDao以介面實現,具體的介面實現以mybatis mapper的形式實現:
程式碼實現如下:
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,新增兩條測試用資料:
在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>
工程目錄如下:
附:
名詞解釋:
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版本相匹配。