IDEA中MyBatis配置测试使用

前提本地有Maven环境
前提本地有数据库环境

一:创建并配置项目

  1. new一个project,选择Maven项目,jdk选对,右边一大串都不用点,直接Next
    在这里插入图片描述

  2. 填写组名项目名然后Next
    在这里插入图片描述

  3. 选择一个储存路径然后finish完成
    在这里插入图片描述

  4. 右下角弹窗记得选择Enable自动导包,进入后看到xml文件
    在这里插入图片描述

  5. 首先导入mysql驱动

   <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

在这里插入图片描述

  1. 接着导入mybatis坐标
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

在这里插入图片描述

  1. 接着是junit包
<!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

在这里插入图片描述
8. 删除项目src目录,在主项目上右键new一个model
在这里插入图片描述

直接next

在这里插入图片描述

随便一个名字,next

在这里插入图片描述 在这里插入图片描述
这样一来我们建立的子模块就自动得到了父模块里面的maven依赖,模块化程度高而且不用重复引入坐标。

9.然后在src->main->resources上右键一个file,命名为mybatis-config.xml,我这里已经建立过了所以报红

在这里插入图片描述

  1. 可以直接去官网的参考文档把配置信息拷贝进去:https://mybatis.org/mybatis-3/zh/getting-started.html
<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

在这里插入图片描述
然后根据自己要连接的数据库修改一下配置文件,注意,如果这里自己mysql版本是5.7或者更高的版本需要把useSSl=true修改为useSSl=false

     <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSl=true&amp;userUnicode=true&amp;characterEncoding=UTF-8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </dataSource>

在这里插入图片描述

  1. 在java文件夹下建立对应的包结构,包括dao层,utils层等,紧接着在utils层下建立MyBatisUtil工具类
    在这里插入图片描述这样做的原因是参考MyBatis官方文档
    ,将 SqlSessionFactory 的实例封装成一个工具类,方便项目更好的运用。在这里插入图片描述

    于是我们把官方文档的样例代码复制过来,稍加修饰

package com.mybatis.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisUtils {
    private static  SqlSessionFactory sqlSessionFactory;
    static{

        try{
            //获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

}

在这里插入图片描述

因为有了 SqlSessionFactory,于是可以创建SqlSession,sqlsession包含了所有面向数据库执行sql命令的所有方法


二:编写项目

  1. 在pojo下编写实体类,这里根据数据库来的所以就不放代码了
    在这里插入图片描述

  2. 然后在dao层搞一个接口
    在这里插入图片描述

  3. 然后建立一个对应的xml文件,一般来讲xml是单独放在一个文件夹下的,这里为了演示就跟dao放在一起了,然后从官方文档复制对应的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接口-->
<mapper namespace="com.mybatis.dao.UserDao">

    <select id="getUserList" resultType="com.mybatis.pojo.User">
         select * from User
     </select>

</mapper>

在这里插入图片描述

  1. 接着去test下写单元测试。

    在这里插入图片描述
package com.mybatis.dao;

import com.mybatis.pojo.User;
import com.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {

    @Test
    public void test(){
        //获得SqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //执行sql
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }

        //关闭sqlsession
        sqlSession.close();
        
    }
}

同时去mybatis-config下修改我们注册的mapper
<mapper resource="com/mybatis/dao/UserMapper.xml"/>在这里插入图片描述

为防止资源导出失败,在pom.xml中添加如下

    <!--build中配置resources,放置资源导出失败-->
    <build>
        <resources>
            <resource>
            <directory>src/main/reources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
                
            </resource>
            <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            
            </resource>
        </resources>

    </build>

在这里插入图片描述

最后回到单元测试运行,出现结果。

在这里插入图片描述
如果没有加载上配置可以清理一下缓存试试

在这里插入图片描述




三:增删改

增删改比起查还有多一步提交事务。

接口层:

package com.mybatis.dao;

import com.mybatis.pojo.User;

import java.util.List;

public interface UserMapper {

    //获取全部用户
    List<User> getUserList();

    //根据id获取用户
    User getUserById(int id);

    //添加用户
    int addUser(User user);

    //更新用户
    int updateUser(User user);


    //删除用户
    int deleteUser(int id);

}

测试:

@Test
    public void test1(){
            //插入
            SqlSession sqlSession= MyBatisUtils.getSqlSession();

            UserMapper mapper = sqlSession.getMapper(UserMapper.class);

            int  u = mapper.addUser(new User(2,"aaa","ssssds"));
            if(u>0){
                System.out.println(u+"insert success");
            }

            //提交事务
            sqlSession.commit();
            sqlSession.close();
    }


    @Test
    public void testupdate(){
        //更新
        SqlSession sqlSession= MyBatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.updateUser(new User(1, "deeelete", "deeeelete"));
        if(i>0){
            System.out.println("update success");
        }

        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }


    @Test
    public void testdelete(){
        //删除
        SqlSession sqlSession= MyBatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.deleteUser(2);
        if(i>0){
            System.out.println("delete success");
        }

        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deeeelete

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值