Spring与Mybatis整合

目录

一、导言 

二、创建数据库表

 三、新建一个module模块

 四、导入依赖

五、搭建项目架构

(1)编写jdbc.properties文件

(2)写service层、dao层、pojo类

(3)配置mybatis核心配置文件

(4)编写SQL映射文件

(5)spring配置文件

六、测试程序


一、导言 

有人会问为啥不将springmvc也整合?(下一篇文章会更新ssm整合)

现在的SSM好像是一个整体,很多新入坑的小白就会认为mybatis就必须跟spring、springmvc才能开发的潜意识。

mybatis只是作为一个持久层,Hibernate也可以替代它。

所以不要认为SSM就是一个整体,只是SSM比较流行而已。

有了springmvc就可以开发web项目,只有SM同样也可以开发项目,只是不面向web而已 

二、创建数据库表

创建一张数据库表:t_user 

 三、新建一个module模块

 

 四、导入依赖

依赖分析:

        1、spring-context:这是spring的依赖包

        2、spring-jdbc:这是spring自带的持久层依赖(有人会问为啥用mybatis还导入spring-jdbc依赖?这里的spring-jdbc是用来配置事务管理器,mybatis用来写sql语句)

        3、mysql-connector-java:这是mysql的依赖包

        4、mybatis:这是mybatis的依赖包

        5、mybatis-spring:上面说过ssm不是一个整体,springmvc和spring是继承关系,可以直接用一个配置文件,但是mybatis与spring并不存在继承关系,所以要添加mybatis与spring之间的依赖包

        6、druid:这是阿里的一个数据库连接池的一个实现,没学过连接池的最好去学一下

        7、junit:一个单元测试,方便了程序员测试部分代码

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.10</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.13</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
</dependencies>

记得cv完要刷新一下maven,依赖才会被加载

五、搭建项目架构

(1)编写jdbc.properties文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring6
jdbc.username=root
jdbc.password=1234563

(2)写service层、dao层、pojo类

1、编写pojo类

package com.sm.pojo;

public class User {
    private Integer id;
    private String userName;
    private String userAge;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", userAge='" + userAge + '\'' +
                '}';
    }

    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 getUserAge() {
        return userAge;
    }

    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }

    public User() {
    }

    public User(Integer id, String userName, String userAge) {
        this.id = id;
        this.userName = userName;
        this.userAge = userAge;
    }
}

2、mapper接口:

package com.sm.mapper;
import com.sm.pojo.User;
import java.util.List;
public interface UserMapper {
    /**
     * 添加
     * @param user
     * @return
     */
    int insert(User user);
    /**
     * 删除
     * @param id
     * @return
     */
    int delete(Integer id);
    /**
     * 修改
     * @param user
     * @return
     */
    int update(User user);
    /**
     * 查单个
     * @param id
     * @return
     */
    User select(Integer id);
    /**
     * 查所有
     * @return
     */
    List<User> selectAll();
}

3、service接口以及其实现类

package com.sm.service;

import com.sm.pojo.User;

import java.util.List;

public interface UserService {

    /**
     * 添加用户
     * @param user
     * @return
     */
    int addUser(User user);

    /**
     * 删除用户
     * @param id
     * @return
     */
    int deleteUser(Integer id);

    /**
     * 修改用户
     * @param user
     * @return
     */
    int updateUser(User user);

    /**
     * 查询一个用户
     * @param id
     * @return
     */
    User selectUser(Integer id);

    /**
     * 查所有用户
     * @return
     */
    List<User> selectAllUser();

}

 这里的实现类记得写上@service注解,UserMapper记得写@Autowired自动装配

package com.sm.service.impl;

import com.sm.mapper.UserMapper;
import com.sm.pojo.User;
import com.sm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    public UserMapper userMapper;

    @Override
    public int addUser(User user) {
        return userMapper.insert(user);
    }

    @Override
    public int deleteUser(Integer id) {
        return userMapper.delete(id);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.update(user);
    }

    @Override
    public User selectUser(Integer id) {
        return userMapper.select(id);
    }

    @Override
    public List<User> selectAllUser() {
        return userMapper.selectAll();
    }
}

(3)配置mybatis核心配置文件

这里只写settings标签,其他配置交给spring配置

<?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"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

</configuration>

(4)编写SQL映射文件

注意SQL映射文件的路径、命名要和mapper接口保持一致,namespace要写接口的全限定类名,sql标签的id要写接口的方法名

<?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.sm.mapper.UserMapper">

    <insert id="insert">
        insert into t_user values(null,#{userName},#{userAge})
    </insert>

    <delete id="delete">
        delete from t_user where id=#{id}
    </delete>

    <update id="update">
        update t_user set user_age=#{userAge} where user_name=#{userName}
    </update>

    <select id="select" resultType="user">
        select * from t_user where id=#{id}
    </select>

    <select id="selectAll" resultType="user">
        select * from t_user
    </select>

</mapper>

(5)spring配置文件

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:component-scan base-package="com.sm"/>

    <context:property-placeholder location="jdbc.properties"/>

    <bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
        <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>

    <bean id="datasourceTransactionManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"/>
    </bean>

    <tx:annotation-driven transaction-manager="datasourceTransactionManger"/>

    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="mybatis-config.xml"/>
        <property name="dataSource" ref="datasource"/>
        <property name="typeAliasesPackage" value="com.sm.pojo"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.sm.mapper"/>
    </bean>

</beans>

六、测试程序

这里就不将测试结果展示出来了,在测试的时候按照SQL映射文件传参即可

(关于SQL映射文件传参,在上一篇mybatis文章中有详细讲)

@Test
    public void testSm(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
        UserService userService = applicationContext.getBean("userService", UserService.class);
        User user = new User(null,"张三","30");
        User user1 = new User(null,"李四","18");
        User user2 = new User(null,"王五","28");
        User user3 = new User(null,"赵六","38");
        //添加用户
        userService.addUser(user);
        userService.addUser(user1);
        userService.addUser(user2);
        userService.addUser(user3);
        //修改用户
        /*userService.updateUser(user);*/

        //查询用户
        /*System.out.println(userService.selectUser(1));*/

        //查询多个用户
        /*System.out.println(userService.selectAllUser());*/

        //删除用户
        /*userService.deleteUser(1);*/
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值