首页 > 代码库 > Spring与MyBatis整合

Spring与MyBatis整合

1.导入jar包

  aspectjweaver.jar
  com.springsource.org.aopalliance-1.0.0.jar
  commons-dbcp.jar
  commons-logging.jar
  commons-pool.jar
  mybatis-3.2.8.jar
  mybatis-spring-1.2.1.jar
  mysql-connector-java-5.1.24-bin.jar
  spring-aop-4.0.3.RELEASE.jar
  spring-aspects-4.0.3.RELEASE.jar
  spring-beans-4.0.3.RELEASE.jar
  spring-context-4.0.3.RELEASE.jar
  spring-core-4.0.3.RELEASE.jar
  spring-expression-4.0.3.RELEASE.jar
  spring-jdbc-4.0.3.RELEASE.jar
  spring-tx-4.0.3.RELEASE.jar
  spring-web-4.0.3.RELEASE.jar

2.分包

    com.gxa.spring.controller
    com.gxa.spring.dao
    com.gxa.spring.service

    com.gxa.spring.config
    com.gxa.spring.entity
    com.gxa.spring.service.impl

3.(entity)创建数据库(test/student)和与数据库对应的实体类(Student.class)

public class Student {

    private int id ;
    private String sname ;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }

}

4.(service)创建DAO层的接口(StudentDao)

public interface StudentDao {
    public List<Student> getStudent();
}

5.(entity)创建接口的映射文件(StudentMapper.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="com.gxa.spring.dao.StudentDao">
    <select id="getStudent" resultType="com.gxa.spring.entity.Student">
        select * from student
    </select>
</mapper>

6.(config)让映射文件能在mybatis的配置文件中找到(mybatis-config.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="com.gxa.spring.dao.StudentDao">
    <select id="getStudent" resultType="com.gxa.spring.entity.Student">
        select * from student
    </select>
</mapper>

7.(config)还差dao-spring整合的配置文件(jdbc.properties & spring-dao.xml)

jdbc.properties

  mysql.driver=com.mysql.jdbc.Driver
  mysql.url=jdbc:mysql://localhost:3306/test
  mysql.username=root
  mysql.password=xxxx

spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--读取数据源配置文件-->
    <context:property-placeholder location="classpath:com/gxa/spring/config/jdbc.properties"/>
    
    <!--定义数据源配置文件-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${mysql.driver}"></property>
    <property name="url" value="${mysql.url}"></property>
    <property name="username" value="${mysql.username}"></property>
    <property name="password" value="${mysql.password}"></property>
    </bean>
    
    <!-- 利用Spring框架来创建和管理MyBatis的SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:com/gxa/spring/config/mybatis-config.xml"></property>
    </bean>
    
    <!-- 扫描MyBatis Dao层中接口,同时关联接口中的方法和映射文件的标签id名称 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.gxa.spring.dao"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
</beans>

 

8.(service)创建service接口(StudentService)

public interface StudentService {
    public void getStudent();
}

 

9.(service.impl)创建service实现类(StudentServiceImpl.class)

@Service
public class StudentServiceImpl implements StudentService {
    
    @Autowired
    private StudentDao studentDao;
    
    @Override
    public void getStudent() {
        
        List<Student> list = studentDao.getStudent();
        for (Student s : list) {
            System.out.println(s.getId()+"  "+s.getSname());
        }
    }
}

 

10.(config)创建配置文件来扫描service(spring-service.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:component-scan base-package="com.gxa.spring.service"></context:component-scan>
    
</beans>

 

11.(controller)编写controller(StudentServlet.java)

@Controller
@WebServlet("/Student.do")
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Autowired
    private StudentService studentService;
    
    @Override
    public void init() throws ServletException {
        //获取上下文
        WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
        AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext.getAutowireCapableBeanFactory();
        autowireCapableBeanFactory.autowireBean(this);
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        studentService.getStudent();
    }

}

 

12.(config)编写controller配置文件扫描controller(spring-controller.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:component-scan base-package="com.gxa.spring.controller"></context:component-scan>
    
</beans>

 

13.(WebContent)编写web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
        <display-name>spring</display-name>
        <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!--加载全部配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:com/gxa/spring/config/spring-*.xml</param-value>
    </context-param>
    
    <!--编写listener-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

 

Spring与MyBatis整合