1.导入相关的包
2、添加数据库连接参数文件db.properties
3、添加Spring配置文件applicationContext.xml
<!-- 读取properties文件 -->
<util:properties id="dbConfig" location="classpath:db.properties"></util:properties>
<!-- 配置DBCP所需要的Bean -->
<!--各个Property中name以类中的set方法为准 -->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="#{dbConfig.driver}"></property>
<property name="url" value="#{dbConfig.url}"></property>
<property name="username" value="#{dbConfig.user}"></property>
<property name="password" value="#{dbConfig.password}"></property>
<property name="initialSize" value="#{dbConfig.initsize}"></property>
<property name="maxActive" value="#{dbConfig.maxsize}"></property>
</bean>
<!-- 利用myBatis-spring配置sqlSessionFactory, FactoryBean是工厂Bean,自动创建SqlSessionFacotry类的对象,
所以配置SqlSessionFactoryBean,但返回的对象类型是SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"></property>
<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
</bean>
<!-- MyBatis-spring提供一个mapping(dao接口),会自动扫描,自动找到全部的mapping接口, 并且为每个接口创建一个对象,
并且将对象作为Bean放在spring容器中:举例:IUserDao接口,就会自动创建一个Bean到Spring容器中,其中Bean id自动设置为IUserDao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
<!--basePackage设置mapper(dao)的扫描位置 -->
<property name="basePackage" value="cn.tedu.mybatis.dao"></property>
</bean>
4.创建测试类,测试有参数查询数据
import java.util.List;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.tedu.mybatis.bean.User;
import cn.tedu.mybatis.dao.IUserDao;
public class Test {
ClassPathXmlApplicationContext ctx;
public void init() {
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
/**
* 测试管理的SqlSessionFactory对象
*/
public void testSqlSessionFactory() {
SqlSessionFactory session = ctx.getBean("sqlSessionFactory",
SqlSessionFactory.class);
System.out.println(session);
}
/**
* 测试IUserDao是否可用
*/
public void testIUserDao() {
IUserDao dao = ctx.getBean("IUserDao", IUserDao.class);
List<User> list = dao.findAllUser();
for (User user : list) {
System.out.println(user);
}
}
public static void main(String[] args) {
Test test = new Test();
test.init();
test.testSqlSessionFactory();
test.testIUserDao();
}
}
运行测试:
补充:
1.SqlSessionFactory是个单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心.同时SqlSessionFactory也是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在.在应用运行期间不要重复创建多次,建议使用单例模式.SqlSessionFactory是创建SqlSession的工厂.
2.SqlSession是执行持久化操作的独享,类似于JDBC中的Connection。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句.每个线程都应该有它自己的SqlSession实例.SqlSession的实例不能被共享,同时SqlSession也是线程不安全的,需要关闭。
原文链接:https://blog.csdn.net/u013412772/article/details/73648537