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

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

我们这里以 dbcp 数据源为例。

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>

<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,spring4)