spring整合mybatis

pom.xml依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.4</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.5</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.5</version>
    </dependency>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.3.0</version>
    </dependency>
  </dependencies>
解决资源配置问题
<build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

实体类

    private Integer id;
    private String name;
    private String pswd;
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPswd() {
        return pswd;
    }

    public void setPswd(String pswd) {
        this.pswd = pswd;
    }

    @Override
    public String toString() {
        return "user{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pswd='" + pswd + '\'' +
                '}';
    }
}

dao持久层

public interface UserDao {
    List<User> getUsers();

    void saveUser(User user);

    void deleteUser(int id);

    void updateUser(User user);
}

持久层mapper

<?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.lin.dao.UserDao">
    <select id="getUsers" resultType="com.lin.pojo.User">
        select * from user
    </select>
    <insert id="saveUser" parameterType="user">
        insert into user (id,name,pswd)values (#{id},#{name},#{pswd})
    </insert>
    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
    <update id="updateUser" parameterType="user">
        update user set name=#{name},pswd=#{pswd} where id=#{id}
    </update>
</mapper>

mybatis核心配置文件

<?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>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <typeAliases>
        <typeAlias type="com.lin.pojo.User"></typeAlias>
    </typeAliases>
    <!--这里配置了对应的映射文件,在<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dateSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>中,不能在配置了,不然出错-->
    <mappers>
        <package name="com.lin.dao"/>
    </mappers>
</configuration>

业务层实现类

package com.lin.service.impl;

import com.lin.dao.UserDao;
import com.lin.pojo.User;
import com.lin.service.userService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
@Service("userService")
public class userServiceImpl implements userService {
    @Autowired
    private UserDao userDao;
//    @Autowired
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public List<User> getUsers() {
        return userDao.getUsers();
    }
    @Override
    public void saveUser(User user) {

        userDao.saveUser(user);

    }

    @Override
    public void deleteUser(int id) {
//        User user = new User();
//        user.setId(11);
//        user.setName("to");
//        user.setPswd("bwdts");
//        userDao.saveUser(user);
//        int i=1/0;
        userDao.deleteUser(id);

    }

    @Override
    public void updateUser(User user) {

        userDao.updateUser(user);
    }
    @Override
    public void poi(int id){
        User user = new User();
        user.setId(9);
        user.setName("to");
        user.setPswd("bwdts");
        userDao.saveUser(user);
        int i=1/0;
        userDao.deleteUser(id);
        //这里设置一个异常,来验证事务是否配置成功
    }
}

业务层接口

package com.lin.service;

import com.lin.pojo.User;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface userService {
    List<User> getUsers();

    void saveUser(User user);

    void deleteUser(int id);

    void updateUser(User user);

    void poi(int id);
}

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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!--导入资源配置文件-->
    <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
    <!--c3p0数据源-->
   <bean id="dateSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${driver}"/>
    <property name="jdbcUrl" value="${url}"/>
    <property name="user" value="${name}"/>
    <property name="password" value="${psw}"/>
    <property name="autoCommitOnClose" value="false"/>
   </bean>
   <!--获取sqlSessionFactory,注入容器中-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dateSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.lin.dao"/>
    </bean>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dateSource"/>
    </bean>
    <!--配置事务通知-->
    <tx:advice id="interceptor" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!--配置Aop-->
    <aop:config >
        <!--配置通用切入点表达式-->
        <aop:pointcut id="pt" expression="execution(* com.lin.service.*.*(..))"/>
        <aop:advisor advice-ref="interceptor" pointcut-ref="pt"/>
    </aop:config>

</beans>

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
name=root
psw=123456

测试类

   @Test
public void test6() {
       ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-dao.xml");
       userService userService = applicationContext.getBean("userService", userService.class);
       userService.poi(8);
   }
posted @ 2020-05-12 15:08  清风5438  阅读(96)  评论(0编辑  收藏  举报