一、前期准备工作
1、在bdqn包下建pojo包
在pojo包建实体类,将数据库中对应的属性添加进去,提供公有的get/set方法
2、创建Mybatis的核心配置文件
mybatis-config.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>
<package name="cn.bdqn.pojo"/>
</typeAliases>
</configuration>
3、创建database.properties配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8
user=root
password=123456
二、中期准备工作
4、在cn.bdqn下创建dao层,创建UserMapper.xml和UserMapper接口,
UserMapper.xml
<?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.bdqn.dao.UserMapper">
<select id="getUserById" parameterType="int" resultType="User">
select * from smbms_user where id = #{id}
</select>
</mapper>
UserMapper接口
package cn.bdqn.dao;
import cn.bdqn.pojo.User;
public interface UserMapper {
public User getUserById(Integer id);
}
5、接下来写Spring相关,写整合
首先在applicationContext.xml中配置相关文件
<!-- 自动代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- spring整合mybatis -->
<!-- 1、声明bean 加载database.properties配置文件-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:database.properties</value>
</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${driver}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${user}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
<!-- 声明sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource">
</property>
<property name="configLocation">
<value>classpath:mybatis-config.xml</value>
</property>
</bean>
<!-- 扫描指定Mapper的包,使其注册为Mapper对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage">
<value>cn.bdqn.dao</value>
</property>
</bean>
6、property中的name,
后面跟的是固定的名字,在class相应的包下是固定的;至此,配置结束
前面的6点,均为固定代码,除非名字和路径改变
三、Spring进行相关整合
7、创建service层,调用getUserById;创建serviceImpl和service;
ServiceImpl:
创建Bean属性,定义getUserById 的方法,传入Integer id;返回Bean属性.getUserById(Integer id);
package cn.bdqn.service.Impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.bdqn.aop.service.UserService;
import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
@Service
public class UserServiceImpl implements cn.bdqn.service.UserService{
@Autowired
private UserMapper userMapper;
public User getUserById(Integer id){
return userMapper.getUserById(id);
}
public UserMapper getUserMapper() {
return userMapper;
}
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
}
抽接口Service
package cn.bdqn.service;
import cn.bdqn.pojo.User;
public interface UserService {
public User getUserById(Integer id);
}
8、创建测试类,输出数据库信息
getBean(“参数改为**ServiceImpl类型”);比如userServiceImpl;第一个字母要小写
UserMapperTest:
package cn.bdqn;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.bdqn.pojo.User;
import cn.bdqn.service.UserService;
public class UserMapperTest {
@Test
public void getUserById(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us = (UserService)context.getBean("userServiceImpl");
//给下面的方法加前置后置
User user = us.getUserById(1);
//前置后置完成后才会输出下面的
System.out.println(user.getPhone());
}
}
9、练习,利用Spring整合Mybatis中的provider
配置文件基本不变
ProviderMapper.xml
<?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.bdqn.dao.ProviderMapper">
<select id="getProviderById" parameterType="int" resultType="Provider">
select * from smbms_provider where id = #{id}
</select>
</mapper>
ProviderMapper接口:
package cn.bdqn.dao;
import cn.bdqn.pojo.Provider;
import cn.bdqn.pojo.User;
public interface ProviderMapper {
public Provider getProviderById(Integer id);
}
ProviderServiceImpl:
package cn.bdqn.service.Impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.bdqn.dao.ProviderMapper;
import cn.bdqn.pojo.Provider;
import cn.bdqn.service.ProviderService;
@Service
public class ProviderServiceImpl implements ProviderService{
@Autowired
private ProviderMapper providerMapper;
public Provider getProviderById(Integer id){
return providerMapper.getProviderById(id);
}
public ProviderMapper getProviderMapper() {
return providerMapper;
}
public void setProviderMapper(ProviderMapper providerMapper) {
this.providerMapper = providerMapper;
}
}
ProviderService 接口:
package cn.bdqn.service;
import cn.bdqn.pojo.Provider;
public interface ProviderService {
public Provider getProviderById(Integer id);
}
ProviderMapperTest:
package cn.bdqn;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.bdqn.pojo.Provider;
import cn.bdqn.service.ProviderService;
public class ProviderMapperTest {
@Test
public void getProviderById(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ProviderService ps = (ProviderService)context.getBean("providerServiceImpl");
Provider provider = ps.getProviderById(1);
System.out.println(provider.getProContact());
}
}