Mybatis深入浅出之Mybatis整合spring

整合思路

  1. SqlSessionFactory对象应该放到spring容器中作为单例存在。
  2. 传统dao的开发方式中,应该从spring容器中获得sqlsession对象。
  3. Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。
  4. 数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

整合需要的jar包

  1. spring的jar包
  2. Mybatis的jar包
  3. Spring+mybatis的整合包。
  4. Mysql的数据库驱动jar包。
  5. 数据库连接池的jar包。

第一步:创建工程

 第二步:导入jar包

前面提到的jar包需要导入,如下图:

 第三步:加入配置文件

在src下创建SqlMapConfig.xml,配置内容如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!-- 设置别名 -->

<typeAliases>

<!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->

<package name="cn.mybatis.pojo" />

</typeAliases>

</configuration>

在src下创建applicationContext.xml,配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

   <!-- 加载配置文件 -->

   <context:property-placeholder location="classpath:db.properties" />

<!-- 数据库连接池 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

destroy-method="close">

<property name="driverClassName" value="${jdbc.driver}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="maxActive" value="10" />

<property name="maxIdle" value="5" />

</bean>

<!-- 配置SqlSessionFactory -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!-- 配置mybatis核心配置文件 -->

<property name="configLocation" value="classpath:SqlMapConfig.xml" />

<!-- 配置数据源 -->

<property name="dataSource" ref="dataSource" />

</bean>

</beans>

在src下创建db.properties,配置内容如下:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8

jdbc.username=root

jdbc.password=root

在src下创建log4j.properties,配置内容如下:

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

导入jar包及加入的配置文件后最终效果如下:

 

工程搭建完后测试,使用Mapper代理形式开发dao

实现Mapper.xml

在src下创建包cn.mybatis.mapper,添加UserMapper.xml配置文件以及UserMapper接口,如下:

<?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="cn.mybatis.mapper.UserMapper">

<!-- 根据用户id查询 -->

<select id="queryUserById" parameterType="int" resultType="user">

select * from user where id = #{id}

</select>

<!-- 根据用户名模糊查询用户 -->

<select id="queryUserByUsername" parameterType="string"

resultType="user">

select * from user where username like '%${value}%'

</select>

<!-- 添加用户 -->

<insert id="saveUser" parameterType="user">

<selectKey keyProperty="id" keyColumn="id" order="AFTER"

resultType="int">

select last_insert_id()

</selectKey>

insert into user

(username,birthday,sex,address) values

(#{username},#{birthday},#{sex},#{address})

</insert>

</mapper>

创建UserMapper接口

public interface UserMapper {

//根据用户id查询

User queryUserById(int id);

//根据用户名模糊查询用户

List<User> queryUserByUsername(String username);

// 添加用户

void saveUser(User user);

}

方式一:配置mapper代理

在applicationContext.xml添加配置

MapperFactoryBean也是属于mybatis-spring整合包

<!-- Mapper代理的方式开发方式一,配置Mapper代理对象 -->

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">

<!-- 配置Mapper接口 -->

<property name="mapperInterface" value="cn.mybatis.mapper.UserMapper" />

<!-- 配置sqlSessionFactory -->

<property name="sqlSessionFactory" ref="sqlSessionFactory" />

</bean>

测试方法

public class UserMapperTest {

private ApplicationContext context;

@Before

public void setUp() throws Exception {

this.context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

}

@Test

public void testQueryUserById() {

// 获取Mapper

UserMapper userMapper = this.context.getBean(UserMapper.class);

User user = userMapper.queryUserById(1);

System.out.println(user);

}

@Test

public void testQueryUserByUsername() {

// 获取Mapper

UserMapper userMapper = this.context.getBean(UserMapper.class);

List<User> list = userMapper.queryUserByUsername("张");

for (User user : list) {

System.out.println(user);

}}

@Test

public void testSaveUser() {

// 获取Mapper

UserMapper userMapper = this.context.getBean(UserMapper.class);

User user = new User();

user.setUsername("曹操");

user.setSex("1");

user.setBirthday(new Date());

user.setAddress("三国");

userMapper.saveUser(user);

System.out.println(user);

}}

方式二:扫描包形式配置mapper

<!-- Mapper代理的方式开发方式二,扫描包方式配置代理 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<!-- 配置Mapper接口 -->

<property name="basePackage" value="cn.mybatis.mapper" />

</bean>

每个mapper代理对象的id就是类名,首字母小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值