Spring框架与Mybatis框架整合(IDEA)

当前,大部分的Java互联网项目都是用SSM框架,即SpringMVC + Spring + MyBatis 。SpringMVC用于拦截前端请求,Mybatis用于访问数据库,Spring IoC控制反转用于装备bean,Spring AOP可用于处理数据库事务。

前期已经介绍了不少SpringMybatis框架的内容,此篇博客将进行Spring-Mybatis的整合。闲话少叙,直接开始吧!

1、创建一个普通Java Web项目

在这里插入图片描述
由于需要创建Java Web项目,请先配置好JDK,Tomcat环境,还没有配置的可以去翻翻我之前的博客,都有介绍,我这里配置的的JDK1.8+Tomcat9。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、复制Jar包依赖到项目lib文件夹

①、在项目web/WEB-INF目录下创建lib文件夹

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②、复制Spring的jar包到项目lib文件夹

Spring框架支持包下载地址:https://repo.spring.io/release/org/springframework/spring/
在这里插入图片描述
在这里插入图片描述

此处少导入了spring-jdbc,否则会报错Property 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError: org/sprin

在这里插入图片描述
在这里插入图片描述

③、复制MySQL驱动到项目lib文件夹

MySQL官网下载地址:https://dev.mysql.com/downloads/connector/j/
在这里插入图片描述
在这里插入图片描述

④、复制DBCP数据库连接池jar包项目lib文件夹

在这里插入图片描述

⑤、复制Mybatis的Jar到项目lib文件夹

在这里插入图片描述
在这里插入图片描述

⑥、复制Mybatis-spring连接包到lib文件夹

maven下载地址:https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/2.0.3
在这里插入图片描述

⑦、复制测试Junit的包到项目lib文件夹

在这里插入图片描述
l i b L i b r a r y \color{red}将lib文件夹设置为项目Library!
在这里插入图片描述
在这里插入图片描述
P r o j e c t S t r u c t u r e \color{red}再检查一下Project Structure是否错误!
在这里插入图片描述

3、创建MySQL数据库

# 创建spring_mybatis_demo数据库
DROP DATABASE IF EXISTS `spring_mybatis_demo`;
CREATE DATABASE `spring_mybatis_demo`;
USE `spring_mybatis_demo`;
# 创建t_user表
CREATE TABLE `t_user`(
	`id` int PRIMARY KEY auto_increment,
	`username` VARCHAR(32),
	`password` VARCHAR(18),
	`gender` VARCHAR(1),
	`info` VARCHAR(200)
);
# 插入两条测试数据
INSERT INTO `t_user`(`username`,`password`,`gender`,`info`) 
VALUES('hestyle_1','123456','男','123'),('hestyle_2','654321','男','456');

在这里插入图片描述

4、创建配置文件

①、创建Spring的配置文件applicationContext.xml

此处由于笔误错写为application-context.xml,部分图片没有更正,请一律更新为applicationContext.xml

在这里插入图片描述
在这里插入图片描述

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
       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-3.2.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">


    <!-- 1.配置数据库,dbcp数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <!-- 访问数据库url,spring_mybatis_demo是前面创建的数据库-->
        <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis_demo"/>
        <!-- 访问数据库的账号、密码-->
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <!-- 最大连接  -->
        <property name="maxActive" value="10"/>
        <!--最大空闲数  -->
        <property name="maxIdle" value="5"/>
    </bean>

    <!-- 2.配置会话工厂-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
    </bean>

    <!-- 3.批量创建mapper的bean对象
        内部会扫描指定包下的mapper,创建代理对象,名字就是类名,头字母改小写
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.hestyle.demo.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
    </bean>
</beans>
②、创建Mybatis全局配置文件SqlMapConfig.xml

在这里插入图片描述
在这里插入图片描述

<?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>
    <!--告诉mybatis映射文件所在包路径-->
    <mappers>
        <package name="cn.hestyle.demo.mapper"></package>
    </mappers>
</configuration>
③、创建log4j日志配置文件log4j.properties

在这里插入图片描述

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

5、编写Java文件

①、编写User实体类

在这里插入图片描述

package cn.hestyle.demo.entity;

import java.io.Serializable;

/**
 * description: User实体类
 *
 * @author hestyle
 * @version 1.0
 * @className Spring_Mybatis_Demo->User
 * @date 2020-01-27 14:20
 **/
public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String info;

    public User() {
    }

    public Integer getId() {
        return id;
    }

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

    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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", info='" + info + '\'' +
                '}';
    }
}
②、编写UserMapper接口类

在这里插入图片描述

package cn.hestyle.demo.mapper;

import cn.hestyle.demo.entity.User;

import java.util.List;

/**
 * description: UserMapper接口类,作用相当于IUserDao
 *
 * @author hestyle
 * @version 1.0
 * @className Spring_Mybatis_Demo->UserMapper
 * @date 2020-01-27 14:24
 **/
public interface UserMapper {
    /**
     * 保存一个user对象
     * @param user 待保存的user对象
     * @return 受影响的行数
     */
    public Integer save(User user);

    /**
     * 通过id删除user
     * @param id user id
     * @return 受影响的行数
     */
    public Integer deleteById(Integer id);

    /**
     * 更新user对象
     * @param user 待更新user对象
     * @return 受影响的行数
     */
    public Integer update(User user);

    /**
     * 通过id查找user
     * @param id user id
     * @return 查到了user对象
     */
    public User findById(Integer id);

    /**
     * 查找所有的user
     * @return user list集合
     */
    public List<User> findAll();
}
③、编写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="cn.hestyle.demo.mapper.UserMapper" >
    <!--
        保存一个user对象 public Integer save(User user);
    -->
    <insert id="save" keyProperty="id" useGeneratedKeys="true" parameterType="cn.hestyle.demo.entity.User" >
        INSERT INTO `t_user` (
            username, password, gender, info
        ) VALUES (
                     #{username}, #{password}, #{gender},#{info}
                 )
    </insert>
    <!--
        通过id删除user public Integer deleteById(Integer id);
    -->
    <delete id="deleteById" parameterType="java.lang.Integer" >
        DELETE FROM `t_user`
        where id = #{id}
    </delete>

    <!--
        更新user对象 public Integer update(User user);
    -->
    <update id="update" parameterType="cn.hestyle.demo.entity.User" >
        UPDATE `t_user`
        SET
            username = #{username},
            password = #{password},
            gender = #{gender},
            info = #{info}
        WHERE id = #{id}
    </update>

    <!--
        通过id查找user public User findById(Integer id);
    -->
    <select id="findById" resultType="cn.hestyle.demo.entity.User" >
        SELECT id,username,password,gender,info
        FROM `t_user`
        WHERE id = #{id}
    </select>

    <!--
        查找所有的user public List<User> findAll();
    -->
    <select id="findAll" resultType="cn.hestyle.demo.entity.User" >
        SELECT id,username,password,gender,info
        FROM `t_user`
    </select>
</mapper>

6、编写测试类

在这里插入图片描述

package cn.hestyle.demo.test;

import cn.hestyle.demo.entity.User;
import cn.hestyle.demo.mapper.UserMapper;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

/**
 * description: UserMapper测试
 *
 * @author hestyle
 * @version 1.0
 * @className Spring_Mybatis_Demo->UserMapperTest
 * @date 2020-01-27 14:46
 **/
public class UserMapperTest {
    private static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    private static UserMapper userMapper = (UserMapper) context.getBean("userMapper");

    @Test
    public void testSave() {
        User user = new User();
        user.setUsername("hestyle_save");
        user.setPassword("123");
        user.setGender("男");
        user.setInfo("hhhhhh");
        //保存user
        userMapper.save(user);
        //由于数据库配置了id自增长,并且id配置了返回id,所以user保存后是有id属性的
        System.err.println(user);
    }

    @Test
    public void testFindAll() {
        List<User> userList = userMapper.findAll();
        for (User user : userList) {
            System.err.println(user);
        }
    }
}

执行testSave方法,控制台输出:
在这里插入图片描述
执行testFindAll方法,控制台输出:
在这里插入图片描述
以上就是Spring框架与Mybatis框架整合的主要内容,要是喜欢的话可以点个赞哟~

项目源码地址:
地址一:https://pan.baidu.com/s/1gCn8dO1giV7CFbtH9_4Yow 提取码: r6cv
地址二:https://pan.baidu.com/s/111-DY0d58FtlN0TAI0CgGQ 提取码: tzry
地址三:https://pan.baidu.com/s/1Rzm2cxmAi9eiq9jtYGDDMw 提取码: bqtx

\color{blue}博客推荐:
Spring框架之创建第一个项目(IDEA)
Spring框架之Bean装配(实例化)与作用域
Spring框架之注解注入
Mybatis框架之快速入门(别再翻了,此篇博客就够了)
Mybatis框架之关联查询(一对多、多对多)(附Demo:用户和订单)
Mybatis框架之延时加载与查询缓存

发布了976 篇原创文章 · 获赞 230 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/104091747