用mybatis框架来实现增删改查的操作

本文详细介绍了如何使用Mybatis框架进行数据库的增删改查操作,包括创建数据库表、设置Maven项目、添加依赖、配置mybatis-config.xml、创建工具类、实体类、接口以及对应的XML文件,并提供了测试用例展示查询、添加、更新和删除数据的过程。
摘要由CSDN通过智能技术生成

既然涉及到了增删改查,准备⼯作是⼀定要有数据库,并且建⽴好表格。 

create table user
(
 id int not null,
 name varchar(20) not null,
 pwd varchar(20) not null,
 gender varchar(20) not null
);
//添加表格内容
insert into user values (1,"name","123","男");

最后我创建的表格是这样的 

一、创建项目

先创建一个maven项目,名字可以自己取

二、导入依赖

接下来在这个pom.xml文件中手动添加依赖

<dependencies>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>//一定要是自己电脑上下载的mybatis的版本!
        </dependency>

        <!--junit 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

导入依赖后点击右上角小图标自动加载配置依赖

三、配置 mybatis-config.xml

先在resources目录下创建org.example.xml目录

在resources目录下创建mybatis-config.xml文件

在文件中输入配置代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSl=true"/>
                <property name="username" value="root"/><!--这里是自己的用户名-->
                <property name="password" value="xxxxxx"/><!--这里是自己的密码-->
            </dataSource>
        </environment>
    </environments>
    <!--数据库映射文件 -->
    <mappers>
        <!--加载sql映射文件-->
        <mapper resource="org.example.mapper/UserMapper.xml"/> <!--一定要改!下面复制自己UserMapper的路径名-->
    </mappers>
</configuration>

四、创建工具类

在目录中建立utils的文件,创建MybatisUtils类,目录如下

在文件中输入代码:

package org.example.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 {
            //加载mybatis的核心配置文件
            String source = "mybatis-config.xml";
            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream(source);
            //通过资源的名称获取一个输入流
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //创建一个数据库的会话工厂,使用了sqlsessionfactorybuilder类来构建,而其输入流是通过inputstream读取的
        } catch (IOException e) {
            e.printStackTrace();
        }
        /*查了一下,catch的作用主要是如果在前面的代码中发生了IOException,
        即输入流的读取过程出现了问题,那么程序会执行catch块中的代码,打印出异常的堆栈信息,
            以便进行调试和错误处理
            */
    }

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

}

五、创建实体类

创建实体类User,存放方法。

package org.example.pojo;

public class User {
    private String name;
    private String pwd;
    private String gender;

    public User(){

    }

    public User(String name ,String pwd, String gender){
        this.gender = gender;
        this.name =name;
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getGender() {
        return gender;
    }

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

    //to string打印类中实体变量属性
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", gender=" + gender +
                '}';
    }
}

六、创建接口

创建接口UserMapper,定义方法的规范

 

package org.example.pojo;

public class User {
    private String name;
    private String pwd;
    private String gender;

    public User(){

    }

    public User(String name ,String pwd, String gender){
        this.gender = gender;
        this.name =name;
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getGender() {
        return gender;
    }

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

    //to string打印类中实体变量属性
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", gender=" + gender +
                '}';
    }
}

七、创建接口对应的xml文件

在resources下创建和UserMapper接口对应的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
    namespace:命名空间
-->
<mapper namespace="org.example.mapper.UserMapper">
    <!--注意这里是要复制UserMapper接口的路径地址-->
<!--
    <resultMap id="userResultMap" type="org.example.pojo.User">
        <!-colum:数据库里的字段名  property是类中对应的属性名->
       <result column="uname" property="uname"></result>
    </resultMap>-->

    <!-- id:每一个sql语句的唯一标识,即外部通过id来调用语句   -->
    <!-- resultType:返回的结果类型,即定义的POJO类-->

    <!--查询-->
    <select id="selectByID" resultType="org.example.pojo.User">
        select * from user where id = #{id}
    </select>
    <!--增加-->
    <insert id="add" parameterType="org.example.pojo.User">
        insert into user(id,name,pwd,gender) values(#{id},#{name},#{pwd},#{gender});
    </insert>
    <!--修改-->
    <update id="update" parameterType="org.example.pojo.User">
        update user set id = #{id} , pwd = #{pwd} where gender = #{gender};
    </update>
    <!--删除-->
    <delete id="deleteByID" parameterType="int">
        delete from user where id = #{id};
    </delete>

</mapper>

八、写测试类

下面是测试类的代码:

package org.example.test;

import org.example.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.example.mapper.UserMapper;
import org.example.pojo.User;
import org.junit.Test;

public class Test1 {
        @Test
        public void getUserListTest() {
            // 1.获得SqlSession对象
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            // 2.执行SQL
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            int id = 2;
            User user = userMapper.selectByID(id);
            System.out.println(user);
            sqlSession.close();
        }

        @Test
        public void addUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            int res = userMapper.add(new User(5,"白骨精", "127", "女"));
            System.out.println(res);
            // 提交事务
            sqlSession.commit();
            sqlSession.close();
        }

        @Test
        public void updateUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            int res  = userMapper.update(new User(0, "白骨精", "888", "女"));
            System.out.println(res);
            sqlSession.commit();
            sqlSession.close();
        }

        @Test
        public void deleteUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            userMapper.deleteByID(1);
            sqlSession.commit();
            sqlSession.close();
        }
    }

 

九、测试结果

原表格:

查询(我写的是根据id查询信息):

查询的是id为2的信息:

增加信息:

增加了白骨精的信息

修改信息:

把白骨精的密码改成888

删除信息:

删除id=1的信息

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值