Spring与MyBatis整合

1、Spring

        Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2、MyBatis

       MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1.Maven引入jar包

<!--druid数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency>


        <!--MyBatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>


        <!--单测-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.3</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>
        <!--mybatis jar包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>

        <!--Mybatis+Spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.1</version>
        </dependency>

        <!-- Spring整合JavaWeb的包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>


        <!--jstl表达式-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!--java ee-->
        <dependency>
            <groupId>javaee</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5</version>
        </dependency>

        <!-- MySQLjar -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <!--aop使用的jar-->
        <dependency>
            <groupId> org.aspectj</groupId >
            <artifactId> aspectjweaver</artifactId >
            <version> 1.8.7</version >
        </dependency>

  

2.创建JDBC.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/y2167?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=

  

3.创建Spring-MyBatis.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: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">

    <!--配置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--识别jdbc.properties文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--把SqlSessionFactory生产权交给spring-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

    </bean>

    <!--DAO-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--设置包路径-->
        <property name="basePackage" value="cn.happy.day16SSM.dao"/>
    </bean>
    <!--service-->
    <bean id="bookservice" class="cn.happy.day16SSM.service.BookServiceImpl">
      <!--注意事项:如果接口是以I开头,那么会默认在内存中默认生成一个与接口名字一样的实现类如IXXXDAO
         如果不是一I开头,则默认生成第一个小写字母开头如 xXXDAO
      --> <property name="dao" ref="IBookDAO"/> </bean> </beans>

 

4.数据库结构

4.创建接口实体类

 

代码如下

package cn.happy.day16SSM.dao;

import cn.happy.day16SSM.entity.Book;

/**
 * Created by Administrator on 2018/3/16.
 */
public interface IBookDAO {
    //添加图书
    public int addBook(Book book);
}

 DAO.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">
<!--namespace:接口绝对路径-->
<mapper namespace="cn.happy.day16SSM.dao.IBookDAO">
    <!--根据Id修改Name-->
    <insert id="addBook">
        INSERT into book(bookName,bookAuthor,bookPrice)VALUES (#{bookName},#{bookAuthor},#{bookPrice})
    </insert>

</mapper>

  

entity

package cn.happy.day16SSM.entity;

/**
 * Created by Administrator on 2018/3/16.
 */
public class Book {
    private Integer bookId;
    private String bookName;
    private String bookAuthor;
    private Integer bookPrice;

    public Integer getBookId() {
        return bookId;
    }

    public void setBookId(Integer bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getBookAuthor() {
        return bookAuthor;
    }

    public void setBookAuthor(String bookAuthor) {
        this.bookAuthor = bookAuthor;
    }

    public Integer getBookPrice() {
        return bookPrice;
    }

    public void setBookPrice(Integer bookPrice) {
        this.bookPrice = bookPrice;
    }
}

  

serviceImpl

package cn.happy.day16SSM.service;

import cn.happy.day16SSM.dao.IBookDAO;
import cn.happy.day16SSM.entity.Book;

/**
 * Created by Administrator on 2018/3/16.
 */
public class BookServiceImpl implements BookService {
    //
    private IBookDAO dao;

    public IBookDAO getDao() {
        return dao;
    }

    public void setDao(IBookDAO dao) {
        this.dao = dao;
    }

    public int addBook(Book book) {
        return dao.addBook(book);
    }
}

  

5.测试类

package day16SSM;

import cn.happy.day15tx.service.IStockService;
import cn.happy.day16SSM.dao.IBookDAO;
import cn.happy.day16SSM.entity.Book;
import cn.happy.day16SSM.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Administrator on 2018/3/3.
 */
public class Test20180316 {

    //Spring+MyBatis整合
    @Test
    public void Spring(){
        ApplicationContext ctx=new ClassPathXmlApplicationContext("Spring-MyBatis.xml");
        BookService service=(BookService)ctx.getBean("bookservice");
        Book book=new Book();
        book.setBookName("JAVA Web");
        book.setBookAuthor("许令波");
        book.setBookPrice(60);
        service.addBook(book);
    }


}

  

测试结果

原文地址:https://www.cnblogs.com/xuchangqi1/p/8595381.html