Spring | SM整合(Spring+MyBatis)

0️⃣使用工具

  • 编辑器:IDEA企业版

  • 构建系统:Maven

  • 数据库:MySQL

1️⃣创建项目

创建maven项目

选择新建项目,在E盘下创建名为SMDemo的项目,构建系统选择Maven.

Spring | SM整合(Spring+MyBatis)_第1张图片

项目结构

Spring | SM整合(Spring+MyBatis)_第2张图片
  • src/main/java - java 逻辑代码类 存放的位置

  • src/main/resources - 配置文件、资源包等存放的位置

  • src/test/java - java测试类 存放的位置

  • pom.xml - 添加依赖的位置,maven自动帮我们导入依赖对应的jar包

2️⃣添加依赖

打开pom.xml文件,初始代码如下:



    4.0.0

    org.example
    SMDemo
    1.0-SNAPSHOT

    
        8
        8
        UTF-8
    

导入MyBatis与数据库相关依赖

添加标签,在标签中加入相关依赖

⭕MyBatis

       
            org.mybatis
            mybatis
            3.5.2
        

⭕MySQL连接

        
            mysql
            mysql-connector-java
            5.1.47
        

⭕Druid数据库连接池

        
            com.alibaba
            druid
            1.1.23
        

导入Spring依赖

⭕Spring

        
            org.springframework
            spring-web
            4.3.18.RELEASE
        

⭕Spring对ORM的支持

        
            org.springframework
            spring-orm
            4.3.18.RELEASE
        

导入Spring与MyBatis关联的依赖

⭕Spring与MyBatis关联

        
            org.mybatis
            mybatis-spring
            2.0.2
        

导入其他依赖

⭕junit

        
            junit
            junit
            4.13.2
            test
        

总览

    
        8
        8
        UTF-8
    

    
        
        
            org.mybatis
            mybatis
            3.5.2
        

        
            mysql
            mysql-connector-java
            5.1.47
        

        
            com.alibaba
            druid
            1.1.23
        

        
        
            org.springframework
            spring-web
            4.3.18.RELEASE
        

        
            org.springframework
            spring-orm
            4.3.18.RELEASE
        

        
        
            org.mybatis
            mybatis-spring
            2.0.2
        

        
        
            junit
            junit
            4.13.2
            test
        
    

点击右上角的小按钮刷新导入

3️⃣配置文件

MyBatis阶段编写配置文件

在以前MyBatis阶段,我们编写项目会添加一个mybatis-config.xml文件,在文件中配置数据库连接的相关参数等,如下:





    
    
        
    

    
    
        
        
            
            
            
            
                
                
                
                
                
            
        
    

    
    
        
        
    

使用Spring编写配置文件

如今我们使用Spring,对于Dao的Dao.xml实现,我们需要使用Spring的IoC容器进行bean的管理。因此,我们不再需编写mybatis-config.xml,而是在Spring的配置文件中编写相关配置,将所有dao对应的dao.xml生成对应的实例。

⭕编写Spring配置文件

新建Spring的xml配置文件app.xml:




⭕扫描所有要被Spring管理实例(通过注解方式开发)

    
    

⭕生成数据库连接池对象

    
    
        
        
        
        
    

⭕配置SqlSessionFactory

    
    
        
        
        
    

⭕生成dao.xml对应实例

    
    
        
        
        
    

总览




    
    

    
    
        
        
        
        
    

    
    
        
        
        
    

    
    
        
        
        
    

4️⃣打开数据库

登录MySQL

管理员身份启动cmd,输入 net start mysql 启动 mysql 数据库服务。

net start mysql
Spring | SM整合(Spring+MyBatis)_第3张图片

输入用户名、密码登录 mysql 。

mysql -u 你的用户名 -p
Spring | SM整合(Spring+MyBatis)_第4张图片

查看 mysql 中的数据库,选择你的数据库

show databases;
use 你的数据库;
Spring | SM整合(Spring+MyBatis)_第5张图片

创建 user 表

创建了一张 user 表,包含了 id,name,password 三个字段。其中 id 字段为主键,设置为自动增长

create table user(
    id int primary key auto_increment,
    name varchar(20),
    password varchar(20)
    );
Spring | SM整合(Spring+MyBatis)_第6张图片

插入数据

插入若干条记录,用于后面的测试

insert into user values(null,"ketty","root");

查看表

select * from user;
Spring | SM整合(Spring+MyBatis)_第7张图片

5️⃣IDEA连接数据库

选择MySQL

打开IDEA右侧的数据库连接,选择 + 号,选择MySQL.

Spring | SM整合(Spring+MyBatis)_第8张图片

填写相关配置

填写相关配置,包括MySQL连接的用户名和密码,要连接的数据库,在URL的后面添加如下字段。

?serverTimezone=GMT&useSSL=false
Spring | SM整合(Spring+MyBatis)_第9张图片

连接成功后,可以看见我们数据库中的表。如果没有出现表,可以点击上面的刷新按钮刷新一下。

Spring | SM整合(Spring+MyBatis)_第10张图片

6️⃣生成Pojo、Dao类

新建目录存放类

右键src/main/java目录,新建com.app.pojo、com.app.dao、com.app.service目录

Spring | SM整合(Spring+MyBatis)_第11张图片

添加插件

找到插件,在搜索栏搜索better-mybatis-generator插件,点击添加。

Spring | SM整合(Spring+MyBatis)_第12张图片
Spring | SM整合(Spring+MyBatis)_第13张图片

填写要生成类的相关信息

右键user类,选择mabatis-generate选项。

Spring | SM整合(Spring+MyBatis)_第14张图片

这里我们修改pojo类dao类dao.xml 三大类文件生成的位置(红框标注处),分别修改成我们刚刚新建的com.app.pojo包以及com.app.dao包。

Spring | SM整合(Spring+MyBatis)_第15张图片

❗注意如果你的mysql版本是8.0及以上,需要勾选下面mysql_8(红框标注处)。

❗查看mysql版本:打开cmd,输入mysql -V

mysql -V
Spring | SM整合(Spring+MyBatis)_第16张图片

修改完毕后,点击确定。第一次连接会要我们输入数据库连接的账号和密码。填写后在点击确定。

可以看见,我们的com.app.pojo和com.app.dao目录下多了四个文件。这四个文件是插件自动帮我们生成的,包括生成了一些常用的SQL单表操作,如根据条件查询,根据条件修改等。我们在service中就可以直接使用他们了。

Spring | SM整合(Spring+MyBatis)_第17张图片
Spring | SM整合(Spring+MyBatis)_第18张图片

7️⃣编写Service类

编写接口

编写UserService接口,定义2个方法。

package com.app.service;

import com.app.pojo.User;

import java.util.List;

public interface UserService {
    List getAllUser();

    long countByExample();
}

编写实现类

创建Impl目录,编写UserServiceImpl实现类,实现2个方法。

package com.app.service.impl;

import com.app.dao.UserDao;
import com.app.pojo.User;
import com.app.pojo.UserExample;
import com.app.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired // 自动注入
    private UserDao userDao;

    @Override
    public List getAllUser() {
        return userDao.selectByExample(null);
    }

    @Override
    public long countByExample() {
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        criteria.andNameLike("%t%");
        return userDao.countByExample(userExample);
    }
}

Criteria

⭕在我们使用插件创建的类中,有一个之前没有见过的类UserExample。这个类是给我们拼接条件用的。

在SQL语句中,我们可能会使用到条件进行增删改查。UserExample中有一个内部类Criteria,通过这个内部类中的方法,我们可以拼接我们像要的条件。

⭕如上面的第二个方法中,我们使用了userDao的countByExample()方法。这个方法的SQL语句原本是如下这样:

select count(*) from user;

当我们使用criteria的andNameLike("%t%")方法时,这个方法帮助我们在查询语句后面添加了一个根据name模糊查询的条件。Criteria还有其他很多方法可供选择,这样我们就可以自由的根据需求去拼接我们想要的SQL语句。

Spring | SM整合(Spring+MyBatis)_第19张图片

⭕当然,如果我们在使用XXXByExample()方法时传入了null值,SQL就没有任何条件,如第一个方法那样,查询表中所有的记录。

8️⃣编写Test类

创建Test类

src/test/java目录下创建com.app.test目录,创建UserTest类。

Spring | SM整合(Spring+MyBatis)_第20张图片

编写Test类

注解执行顺序:@Before -> @Test -> @After

即@Before在@Test标注的方法前执行;

@After在@Test标注的方法后执行。

package com.app.test;

import com.app.dao.UserDao;
import com.app.pojo.User;
import com.app.service.UserService;
import com.app.service.impl.UserServiceImpl;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class UserTest {
    private ApplicationContext applicationContext;

    @Before
    public void before() {
        applicationContext = new ClassPathXmlApplicationContext("app.xml");
    }

    @Test
    public void test() {
        UserDao userDao = applicationContext.getBean(UserDao.class);
        User user = userDao.selectByPrimaryKey(8);
        System.out.println(user);
    }

    @Test
    public void testGetAllUser() {
        UserService userService = applicationContext.getBean(UserServiceImpl.class);
        List users = userService.getAllUser();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void testCountByExample() {
        UserService userService = applicationContext.getBean(UserServiceImpl.class);
        long i = userService.countByExample();
        System.out.println(i);
    }
}

测试

⭕test()方法

Spring | SM整合(Spring+MyBatis)_第21张图片

⭕testGetAllUser()方法

Spring | SM整合(Spring+MyBatis)_第22张图片

⭕testCountByExample()方法

Spring | SM整合(Spring+MyBatis)_第23张图片

你可能感兴趣的:(Java,mybatis,spring,java,intellij-idea,mysql)