Spring 集成 MyBatis 笔记(Mybatis-Spring 的用法)- 实战部分
2015-12-31 17:08
393 查看
Spring 集成 MyBatis 笔记(Mybatis-Spring 的用法)- 实战部分
我们的例子以 dbcp 数据源为例。配置 MapperScannerConfigurer (最佳实践)
<!-- 引入属性文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!--本示例采用 DBCP 连接池,应预先把 DBCP 的 jar 包复制到工程的 lib 目录下。 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:com/liwei/ssm/mapper/*Mapper.xml" /> <!-- 还可以在这里配置 typeAliases --> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.liwei.ssm.mapper" /> <!-- 最佳实践 它的功能跟 sqlSessionFactory 是一样的,只是它指定的是定义好的 SqlSessionFactory 对应的 bean 名称 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean>
配置 MapperFactoryBean (非最佳实践)
1、引入相关的 jar 包坐标依赖
compile 'org.springframework:spring-core:4.1.7.RELEASE' compile 'org.springframework:spring-context:4.1.7.RELEASE' compile 'org.springframework:spring-jdbc:4.1.7.RELEASE' compile 'org.mybatis:mybatis:3.3.1' compile 'org.mybatis:mybatis-spring:1.2.5' compile 'commons-dbcp:commons-dbcp:1.4' compile 'mysql:mysql-connector-java:5.1.38' compile 'log4j:log4j:1.2.17'
以上的坐标依赖仅仅只是实现功能最基础的依赖,在实际的项目中我们肯定还是要引入 apo 、tx 、beans 模块的依赖。
2、编写 Spring4 的核心配置文件
配置文件参考片段:<context:component-scan base-package="com.liwei.service"/> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- todo 查这里配置的意思 --> <!-- MaxActive,连接池的最大数据库连接数。设为0表示无限制。 --> <property name="maxActive" value="10"></property> <!-- maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为 0 表示无限制。 --> <property name="maxIdle" value="10"></property> <!-- 查这里配置的意思 --> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:com/liwei/mapper/*Mapper.xml" /> </bean> <!-- 配置 MapperFactoryBean 有个缺点,就是只要有一个 Mapper 文件,就要配置一个对应的 bean,推荐配置 MapperScannerConfigurer --> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.liwei.mapper.UUserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>
3、编写测试代码
private ApplicationContext ctx; @Before public void before(){ ctx = new ClassPathXmlApplicationContext("beans.xml"); } @Test public void test01(){ DataSource dataSource = (DataSource) ctx.getBean("dataSource"); System.out.println(dataSource); try { Connection connection= dataSource.getConnection(); String sql = "select user_name,user_password from u_user where user_name = 'zhumei'"; PreparedStatement ps = connection.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while (rs.next()){ String user_name = rs.getString("user_name"); String user_password = rs.getString("user_password"); System.out.println(user_name); System.out.println(user_password); } } catch (SQLException e) { e.printStackTrace(); } } // 直接使用 userMapper 也可以,userMapper 是我们在 beans.xml 文件中配置的一个 id @Test public void test02(){ UUserMapper userMapper = (UUserMapper)ctx.getBean("userMapper"); List<UUser> uUserList = userMapper.selectListBySchoolId(11); for(UUser uUser:uUserList){ System.out.println(uUser.getUserName()); } }
补充:数据库连接的配置文件。
# 说明:如果这里直接写 username , MyBatis 会使用系统的 username 值注入进入,就会出现莫名其妙的情况了。 jdbc.driverClassName = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://127.0.0.1:3306/mybatisinaction?characterEncoding=utf8 jdbc.username = root jdbc.password = 123456
相关文章推荐
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
- 浅析Mybatis 在CS程序中的应用
- Java Mybatis框架入门基础教程
- Java简单实现SpringMVC+MyBatis分页插件
- java中实现兼容ie6 7 8 9的spring4+websocket
- 浅析mybatis和spring整合的实现过程
- mybatis的动态sql详解(精)
- MyBatis入门学习教程(一)-MyBatis快速入门
- Spring与Mybatis的整合方法有哪些
- 解决springmvc+mybatis+mysql中文乱码问题
- Spring+Mybatis+Mysql搭建分布式数据库访问框架的方法
- SpringMVC+MyBatis项目总结(一)
- SpringMVC+MyBatis项目总结(二)
- MyBatis返回结果不稳定
- MyBatis通过反射建立一个对象的过程。
- springMVC+spring+Mybatis
- mybatis基于baseDao的CURD代码生成方案
- SpringMVC+mybatis+Spring框架整合+简单实现的demo
- 笔记:学习JavaWeb开发第三课