步骤
- 开发Mapper组件
- 开发Service组件
- 配置bean
栗子:
数据表
create table person
(
person_id int auto_increment primary key,
person_name varchar(225),
person_age int
);
1. 开发Mapper组件
Mapper xml文件 和 Mapper 接口
Mapper 接口
public interface PersonMapper
{
List<Person> queryPerson(int startId, int endId);
int addPerson(Person person);
}
Mapper xml文件
<mapper namespace="com.lyx.dao.PersonMapper">
<select id="queryPerson" resultMap="personMap">
select * from person where person_id between #{arg0} and #{arg1}
</select>
<insert id="addPerson" >
insert into person value (
<choose>
<when test="id != null">
#{id}
</when>
<otherwise >
null
</otherwise>
</choose>
,#{name},#{age})
</insert>
<resultMap id="personMap" type="person">
<id column="person_id" property="id"/>
<result column="person_name" property="name"/>
<result column="person_age" property="age"/>
</resultMap>
</mapper>
2. 开发Service组件
public interface PersonService
{
List<Person> selectPerson(int startId, int endId);
int insertPerson(Person person);
}
public class PersonServiceImpl implements PersonService
{
//为service组件提供mapper组件
private PersonMapper personMapper;
public void setPersonMapper(PersonMapper personMapper) {
this.personMapper = personMapper;
}
@Override
public List<Person> selectPerson(int startId, int endId) {
return personMapper.queryPerson(startId,endId);
}
@Override
public int insertPerson(Person person) {
return personMapper.addPerson(person);
}
}
3. 配置bean
<?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:c="http://www.springframework.org/schema/c"
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd">
<!--service组件需要注入mapper接口-->
<bean id="service" class="com.lyx.service.PersonServiceImpl">
<property name="personMapper" ref="personMapper"/>
</bean>
<!--Mapper组件需要注入SqlSessionFactory-->
<bean id="personMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.lyx.dao.PersonMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- <!–自动扫描配置mapper组件–>-->
<!-- <mybatis:scan base-package="com.lyx.dao" factory-ref="sqlSessionFactory" />-->
<!--SqlSessionFactory需要注入数据源,mybatis核心配置(非必须)-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="mybatis-config.xml"/>
<property name="dataSource" ref="c3p0"/>
</bean>
<!--配置数据源,db.properties文件里面是数据源配置信息-->
<context:property-placeholder location="classpath:db.properties"/>
<bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="${driver}"
p:jdbcUrl="${url}"
p:user="${user}"
p:password="${pass}"
p:maxPoolSize="${maxSize}"
p:minPoolSize="${minSize}"/>
</beans>
从service组件开始配
-
service需要配置属性:
personMapper:指定mapper组件 -
mapper组件需要用org.mybatis.spring.mapper.MapperFactoryBean工厂类来生成,
需要属性:
mapperInterface:指定mapper组件的接口
sqlSessionFactory:为mapper接口指定SqlSessionFactory -
SqlSessionFactory需要用org.mybatis.spring.SqlSessionFactoryBean工厂类生成,
需要配置属性:
dataSource:数据源
configLocation:MyBatis的核心配置文件(非必须) -
配置数据源
需求关系:
service组件 -----> mapper组件 -----> SqlSessionFactory -----> dataSource(数据源)