Spring 集成 MyBatis 笔记(Mybatis-Spring 的用法)- 实战部分

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值