一、前期准备工作

1、在bdqn包下建pojo包

在pojo包建实体类,将数据库中对应的属性添加进去,提供公有的get/set方法

2、创建Mybatis的核心配置文件

mybatis-config.xml;在这里,只需要起个别名

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 起个别名 -->
  7. <typeAliases>
  8. <package name="cn.bdqn.pojo"/>
  9. </typeAliases>
  10. </configuration>

3、创建database.properties配置文件

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8
  3. user=root
  4. password=123456

二、中期准备工作

4、在cn.bdqn下创建dao层,创建UserMapper.xml和UserMapper接口,

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="cn.bdqn.dao.UserMapper">
  6. <select id="getUserById" parameterType="int" resultType="User">
  7. select * from smbms_user where id = #{id}
  8. </select>
  9. </mapper>

UserMapper接口

  1. package cn.bdqn.dao;
  2. import cn.bdqn.pojo.User;
  3. public interface UserMapper {
  4. public User getUserById(Integer id);
  5. }

5、接下来写Spring相关,写整合

首先在applicationContext.xml中配置相关文件

  1. <!-- 自动代理 -->
  2. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
  3. <!-- spring整合mybatis -->
  4. <!-- 1、声明bean 加载database.properties配置文件-->
  5. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  6. <property name="location">
  7. <value>classpath:database.properties</value>
  8. </property>
  9. </bean>
  10. <!-- 配置数据源 -->
  11. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  12. <property name="driverClassName">
  13. <value>${driver}</value>
  14. </property>
  15. <property name="url">
  16. <value>${url}</value>
  17. </property>
  18. <property name="username">
  19. <value>${user}</value>
  20. </property>
  21. <property name="password">
  22. <value>${password}</value>
  23. </property>
  24. </bean>
  25. <!-- 声明sqlSessionFactory -->
  26. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  27. <property name="dataSource" ref="dataSource">
  28. </property>
  29. <property name="configLocation">
  30. <value>classpath:mybatis-config.xml</value>
  31. </property>
  32. </bean>
  33. <!-- 扫描指定Mapper的包,使其注册为Mapper对象 -->
  34. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  35. <property name="basePackage">
  36. <value>cn.bdqn.dao</value>
  37. </property>
  38. </bean>

6、property中的name,

后面跟的是固定的名字,在class相应的包下是固定的;至此,配置结束
前面的6点,均为固定代码,除非名字和路径改变

三、Spring进行相关整合

7、创建service层,调用getUserById;创建serviceImpl和service;

ServiceImpl:
创建Bean属性,定义getUserById 的方法,传入Integer id;返回Bean属性.getUserById(Integer id);

  1. package cn.bdqn.service.Impl;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. import cn.bdqn.aop.service.UserService;
  5. import cn.bdqn.dao.UserMapper;
  6. import cn.bdqn.pojo.User;
  7. @Service
  8. public class UserServiceImpl implements cn.bdqn.service.UserService{
  9. @Autowired
  10. private UserMapper userMapper;
  11. public User getUserById(Integer id){
  12. return userMapper.getUserById(id);
  13. }
  14. public UserMapper getUserMapper() {
  15. return userMapper;
  16. }
  17. public void setUserMapper(UserMapper userMapper) {
  18. this.userMapper = userMapper;
  19. }
  20. }

抽接口Service

  1. package cn.bdqn.service;
  2. import cn.bdqn.pojo.User;
  3. public interface UserService {
  4. public User getUserById(Integer id);
  5. }

8、创建测试类,输出数据库信息

getBean(“参数改为**ServiceImpl类型”);比如userServiceImpl;第一个字母要小写
UserMapperTest:

  1. package cn.bdqn;
  2. import org.junit.Test;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. import cn.bdqn.pojo.User;
  6. import cn.bdqn.service.UserService;
  7. public class UserMapperTest {
  8. @Test
  9. public void getUserById(){
  10. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  11. UserService us = (UserService)context.getBean("userServiceImpl");
  12. //给下面的方法加前置后置
  13. User user = us.getUserById(1);
  14. //前置后置完成后才会输出下面的
  15. System.out.println(user.getPhone());
  16. }
  17. }

9、练习,利用Spring整合Mybatis中的provider

  1. 配置文件基本不变
  2. ProviderMapper.xml
  3. <?xml version="1.0" encoding="UTF-8" ?>
  4. <!DOCTYPE mapper
  5. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  6. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  7. <mapper namespace="cn.bdqn.dao.ProviderMapper">
  8. <select id="getProviderById" parameterType="int" resultType="Provider">
  9. select * from smbms_provider where id = #{id}
  10. </select>
  11. </mapper>
  12. ProviderMapper接口:
  13. package cn.bdqn.dao;
  14. import cn.bdqn.pojo.Provider;
  15. import cn.bdqn.pojo.User;
  16. public interface ProviderMapper {
  17. public Provider getProviderById(Integer id);
  18. }
  19. ProviderServiceImpl:
  20. package cn.bdqn.service.Impl;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import cn.bdqn.dao.ProviderMapper;
  24. import cn.bdqn.pojo.Provider;
  25. import cn.bdqn.service.ProviderService;
  26. @Service
  27. public class ProviderServiceImpl implements ProviderService{
  28. @Autowired
  29. private ProviderMapper providerMapper;
  30. public Provider getProviderById(Integer id){
  31. return providerMapper.getProviderById(id);
  32. }
  33. public ProviderMapper getProviderMapper() {
  34. return providerMapper;
  35. }
  36. public void setProviderMapper(ProviderMapper providerMapper) {
  37. this.providerMapper = providerMapper;
  38. }
  39. }
  40. ProviderService 接口:
  41. package cn.bdqn.service;
  42. import cn.bdqn.pojo.Provider;
  43. public interface ProviderService {
  44. public Provider getProviderById(Integer id);
  45. }
  46. ProviderMapperTest
  47. package cn.bdqn;
  48. import org.junit.Test;
  49. import org.springframework.context.ApplicationContext;
  50. import org.springframework.context.support.ClassPathXmlApplicationContext;
  51. import cn.bdqn.pojo.Provider;
  52. import cn.bdqn.service.ProviderService;
  53. public class ProviderMapperTest {
  54. @Test
  55. public void getProviderById(){
  56. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  57. ProviderService ps = (ProviderService)context.getBean("providerServiceImpl");
  58. Provider provider = ps.getProviderById(1);
  59. System.out.println(provider.getProContact());
  60. }
  61. }