Spring整合Mybatis

时间:2022-4-16    作者:老大夫    分类: JAVA


步骤

目录结构

1.导入依赖包

导入pop.xml依赖包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.csi</groupId>
    <artifactId>springmybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!--Spring-->
        <!--spring核心包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.18</version>
        </dependency>
        <!--spring事务管理-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.18</version>
        </dependency>
        <!--spring aop-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.9.1</version>
        </dependency>
        <!--MyBatis-->
        <!--mybatis核心包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!--mysql驱动类-->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- 数据连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.9</version>
        </dependency>
        <!-- 分页组件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.3.0</version>
        </dependency>
        <!--Spring MyBatis-->
        <!--
        https://mvnrepository.com/artifact/org.mybatis/mybati
        s-spring -->
        <!--MyBatis和Spring整合包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.18</version>
        </dependency>
        <!--日志-->
        <!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
            <version>1.16</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.13</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.13</version>
        </dependency>
    </dependencies>
</project>

2.创建包结构

  • domain
  • mapper
  • service
    • resource下
    • com/xxx/mapper(负责存放mapper .xml)
    • applicationContext.xml
    • jdbc.properties
    • log4j.properties

3.配置文件

配置applicationContext.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--配置IoC的驱动注解-->
    <context:component-scan base-package="com.lys" />
    <!--加载属性配置文件-->
    <context:property-placeholder location="jdbc.properties" file-encoding="UTF-8" />
    <!--数据源:选择druid作为数据源配置-->
    <bean id="dataSource"
          class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="${user}" />
        <property name="password" value="${password}"/>
        <property name="url" value="${url}" />
        <property name="driverClassName"
                  value="${driverClass}" />
    </bean>
    <!--配置MyBatis整合环境-->
    <bean id="sessionFactory"
          class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置数据源-->
        <property name="dataSource" ref="dataSource" />
        <!--配置实体类别名-->
        <property name="typeAliasesPackage"
                  value="com.lys.domain" />
        <!--找到并加载所有的映射文件-->
        <property name="mapperLocations"
                  value="classpath*:com/lys/mapper/*.xml" />
        <!--MyBatis下的其他配置-->
        <property name="configuration">
            <bean class="org.apache.ibatis.session.Configuration">
                <property name="mapUnderscoreToCamelCase" value="true" />
            </bean>
        </property>
        <!--MyBatis下的插件-->
        <property name="plugins">
            <array>
                <!--分页插件-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <!--数据库方言:mysql-->
                            <prop key="helpDialect">mysql</prop>
                            <!--reasonable合理化的分页形
                            式-->
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
    <!--加载mybatis下的mapper接口文件,转化为Spring容器中的bean对象-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.lys.mapper" />
    </bean>
    <!--事务-->
    <!--配置事务管理器-->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!--开启aop的注解功能支持-->
    <aop:aspectj-autoproxy />
    <!--开启事务的注解功能支持-->
    <tx:annotation-driven />
</beans>

配置jdbc.properties

user=root
password=123456
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL
driverClass=com.mysql.cj.jdbc.Driver

配置log4j.properties

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

4.测试

建立domain对象

package com.lys.domain;

import java.util.Date;

public class User {
    private Integer userid ;
    private String username ;
    private String password ;
    private Date borndate ;
    private Date hiredate ;
    private double salary ;

    public User(Integer userid, String username, String password, Date borndate, Date hiredate, double salary) {
        this.userid = userid;
        this.username = username;
        this.password = password;
        this.borndate = borndate;
        this.hiredate = hiredate;
        this.salary = salary;
    }

    public User() {
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getBorndate() {
        return borndate;
    }

    public void setBorndate(Date borndate) {
        this.borndate = borndate;
    }

    public Date getHiredate() {
        return hiredate;
    }

    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "User{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", borndate=" + borndate +
                ", hiredate=" + hiredate +
                ", salary=" + salary +
                '}';
    }
}

建立Mapper接口及mapper映射文件

mapper: mapper.java

package com.lys.mapper;

import com.lys.domain.User;

public interface UserMapper {
    void save(User user) ;
}

mapper映射: 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="com.lys.mapper.UserMapper">
    <insert id="save" parameterType="User">
        INSERT INTO userinfo (username,password,borndate,hiredate,salary)
            VALUE
                (#{username},#{password},#{borndate},#{hiredate},#{salary})
    </insert>
</mapper>

建立service接口及实现类

service: UserService接口类

package com.lys.service;

import com.lys.domain.User;

public interface UserService {
    void save(User user);
}

service: UserService实现类

package com.lys.service.impl;

import com.lys.domain.User;
import com.lys.mapper.UserMapper;
import com.lys.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

@Service
@Transactional      //失败回滚
public class UserServiceImpl implements UserService {

    @Autowired
//    @Resource(name = "com.lys.mapper.UserMapper")
    private UserMapper userMapper ;

    @Override
    public void save(User user) {
        this.userMapper.save(user);
//        System.out.println(3 / 0);
    }
}

编写测试类,观察结果

测试类 TestUserService

import com.lys.domain.User;
import com.lys.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.Date;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml ")
public class TestUserService {
    @Autowired
    private UserService userService;

    @Test
    public void testSave() {
        User user = new User();
        user.setUsername("张三");
        user.setPassword("123456");
        user.setBorndate(new Date());
        user.setHiredate(new Date());
        user.setSalary(2000);

        //调用service保存
        userService.save(user);

    }
}

数据库内容

Mysql->test>user{userid,username,password,borndate,hiredate,salary}

标签: spring Mybatis

版权所有:伸手党盘
文章标题:Spring整合Mybatis
文章链接:https://ssdpan.cn/?post=74
本站文章来源于网络搜集和原创,仅供学习使用,未经授权请勿用于任何商业用途,如有侵权及时联系删除

推荐阅读:


扫描二维码,在手机上阅读