1、持久化数据配置导入
在DispatcherServlet配置文件story-servlet.xml中导入持久化数据配置文件:
<import resource="classpath:storyconfig/storyPersistent.xml"/>
2、配置storyPersistent.xml——配置数据源
在storyPersistent.xml中配置Spring操作数据库所依赖的数据源,配置完成即可以通过DataSource获取到数据库连接,操作数据库:
<bean id="storyDataSource"url配置的相对路径是以配置的working directory目录为参考,storysDb.db放在workspace/dbhome目录下,双击server,点击Open launch configuration:
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
<!--配置此项后无需自己实现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;User类
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);
}
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版本相匹配。