mybatis的增删改查运用方式

 更新时间:2023年11月21日 09:21:58   作者:云边的快乐猫  
这篇文章主要介绍了mybatis的增删改查运用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、总览图

代码总览图 

数据库总览图

二、运用 

数据库的一张表对应一个封装类,一个mapper接口,一个mapper.xml文件, 一个实现类。表中的增删改查都在里面编写

但是配置xml文件整个数据库只要一个就好了

1.pom.xml文件根据创建的maven或者spring项目去配置

2.mybatis统一配置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"/><!--改:数据库的固定连接,老版本不用cj-->
                <property name="url" value="jdbc:mysql://localhost:3306/mishop?useSSL=false&amp;serverTimezone=UTC"/><!--mishop改:数据库的要连接的库-->
                <property name="username" value="root"/><!--改:数据库的账号-->
                <property name="password" value="root"/><!--改:数据库的密码-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载映射文件-->
        <mapper resource="com/project/Mapper/AdminMapper.xml"/><!--改:把映射文件的源根路径复制到这里-->
    </mappers>
</configuration>

3.pojo里面的封装类(属性对应数据库表中的属性)

ps:里面要含有set、get方法,有无参构造方法、toString

package com.project.pojo;
 
 
public class Admin {
    private Integer adminId;
    private String adminName;
    private String adminPwd;
    private Integer adminDisable;
 
    public Integer getAdminId() {
        return adminId;
    }
 
    public void setAdminId(Integer adminId) {
        this.adminId = adminId;
    }
 
    public String getAdminName() {
        return adminName;
    }
 
    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }
 
    public String getAdminPwd() {
        return adminPwd;
    }
 
    public void setAdminPwd(String adminPwd) {
        this.adminPwd = adminPwd;
    }
 
    public Integer getAdminDisable() {
        return adminDisable;
    }
 
    public void setAdminDisable(Integer adminDisable) {
        this.adminDisable = adminDisable;
    }
 
    public Admin(Integer adminId, String adminName, String adminPwd, Integer adminDisable) {
        this.adminId = adminId;
        this.adminName = adminName;
        this.adminPwd = adminPwd;
        this.adminDisable = adminDisable;
    }
 
    public Admin() {
    }
 
    @Override
    public String toString() {
        return "Admin{" +
                "adminId=" + adminId +
                ", adminName='" + adminName + '\'' +
                ", adminPwd='" + adminPwd + '\'' +
                ", adminDisable=" + adminDisable +
                '}';
    }
}

4.SQL语句接口映射文件(小蓝鸟

package com.project.Mapper;
 
import com.project.pojo.Admin;
 
import java.util.List;
public interface AdminMapper {
    //增
    // void (封装类 封装类小写)
    //括号要用封装类是因为表里面那行数据都要进行增加
    void add (Admin admin);
 
    //改
    // void 自定义名称 (封装类 封装类小写);
    //括号要用封装类是因为表里面那行数据都要进行增加
    void updateId(Admin admin);
 
    //查全部
    // list <pojo封装类> 自定义全部查询();
    //因为是查询全部,所以括号里面不用加任何参数
    List<Admin> selectAll();
 
    //查单个
    //list <pojo封装类> 自定义全部查询(自定义参数根据id查询);
    List<Admin> selectId(int id);
 
 
    //删
    // void 自定义名称 (自定义参数为要根据id进行删除);
    void deleteId(int id);
}

5.编写SQL语句映射的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">
 
<!--sql映射查询方法-->
 
<!--namespace=对应接口的全部路径-->
<mapper namespace="com.project.Mapper.AdminMapper">
        <!--新增的SQL语句    -->
        <!--第一行:insert新增标签 id="接口定义的名字"  parameterType="封装类的全限名"     -->
        <!--第二行:SQL语句-自增id用null,其他的用#{封装类的属性名} ,....   -->
    <insert id="add" parameterType="com.project.pojo.Admin">
        insert into admin values (null,#{adminName},#{adminPwd},#{adminDisable})
    </insert>
 
        <!--删除的SQL语句    -->
        <!-- 第一行:delete删除标签 id="接口定义的名字"  parameterType="封装类的全限名"   -->
        <!--第二行:SQL语句-根据id(封装的属性)进行删除    -->
    <delete id="deleteId" parameterType="com.project.pojo.Admin">
        delete from admin where adminId=#{adminId}
    </delete>
 
        <!--修改的SQL语句    -->
        <!--第一行:update修改标签  id="接口定义的名字"  parameterType="封装类的全限名"   -->
        <!-- 第二行:SQL语句-因为要修改的是那行的全部数据,所以封装的属性都要一一对应写出来    -->
    <update id="updateId" parameterType="com.project.pojo.Admin">
        update admin set adminName=#{adminName},adminPwd=#{adminPwd},adminDisable=#{adminDisable} where adminId=#{adminId}
    </update>
 
    <!--查询全部的SQL语句    -->
    <!-- 第一行:select查询标签  resultType="封装类的权限定名"  -->
    <select id="selectAll" resultType="com.project.pojo.Admin">
        select * from admin
    </select>
    <!-- 查询单个的SQL语句  如上 -->
    <select id="selectId" resultType="com.project.pojo.Admin">
        select * from admin where AdminId=#{adminId}
    </select>
 
</mapper>

6.实现类(要运行哪个就直接从注释里面提取出来就好)

package com.project.pojo;
 
import com.project.Mapper.AdminMapper;
import lombok.extern.slf4j.Slf4j;
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 AdminImpl {
    public static void main(String[] args) throws IOException {
 
        //1.加载mybatis连接文件(核心配置文件)
        String resource = "mybatis-config.xml";//这是连接数据库的
        InputStream inputStream = Resources.getResourceAsStream(resource);//固定写法
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//固定写法
 
        //2.获取sqlSessionFactory对象--固定的写法
        SqlSession sqlSession = sqlSessionFactory.openSession();
 
        //3.执行sql语句
        AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
 
 
        //以下这些用哪个执行哪个
 
/*         // 添加的方法
        Admin admin = new Admin();
        admin.setAdminName("wangwu");
        admin.setAdminPwd("8888");
        admin.setAdminDisable(54);
        //Mapper接口里面的添加方法
        adminMapper.add(admin);
        */
 
 
/*        Mapper接口里面的删除方法
        adminMapper.deleteId(14);
        */
 
 
/*      修改的方法
        Admin admin = new Admin();
        admin.setAdminId(7);
        admin.setAdminName("王五");
        admin.setAdminPwd("123456");
        admin.setAdminDisable(5555);
        //Mapper接口里面的修改方法
        adminMapper.updateId(admin);
        */
 
 
/*      查询单个的方法,Mapper接口里面的查询方法
        List<Admin> selectId = adminMapper.selectId(5);
        System.out.println(selectId);
        */
 
/*        //查询全部的方法
        List<Admin> selectAll = adminMapper.selectAll();
        System.out.println(selectAll);*/
        
        //提交
        sqlSession.commit();
 
        //6.释放资源
        sqlSession.close();
    }
 
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 简单介绍Java网络编程中的HTTP请求

    简单介绍Java网络编程中的HTTP请求

    这篇文章主要介绍了简单介绍Java网络编程中的HTTP请求,需要的朋友可以参考下
    2015-09-09
  • 详解Jackson的基本用法

    详解Jackson的基本用法

    Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多
    2021-06-06
  • 快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决

    快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决

    这篇文章主要介绍了快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 解决Spring boot2.0+配置拦截器拦截静态资源的问题

    解决Spring boot2.0+配置拦截器拦截静态资源的问题

    这篇文章主要介绍了解决Spring boot2.0+配置拦截器拦截静态资源的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • springmvc请求转发和重定向问题(携带参数和不携带参数)

    springmvc请求转发和重定向问题(携带参数和不携带参数)

    这篇文章主要介绍了springmvc请求转发和重定向问题(携带参数和不携带参数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • spring @Lazy延迟注入的逻辑实现

    spring @Lazy延迟注入的逻辑实现

    有时候我们会在属性注入的时候添加@Lazy注解实现延迟注入,今天咱们通过阅读源码来分析下原因,感兴趣的可以了解一下
    2021-08-08
  • springboot配置数据库密码特殊字符报错的解决

    springboot配置数据库密码特殊字符报错的解决

    这篇文章主要介绍了springboot配置数据库密码特殊字符报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 如何使用Spring Boot实现自定义Spring Boot插件

    如何使用Spring Boot实现自定义Spring Boot插件

    在本文中,我们介绍了如何使用 Spring Boot 实现自定义插件,使用自定义插件可以帮助我们快速地添加一些额外的功能,提高系统的可扩展性和可维护性,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • Java基础概述面试题复习

    Java基础概述面试题复习

    这篇文章主要介绍了java基础面试题,文中的描述非常详细,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • Java中如何编写一个数的n次方(幂运算)?

    Java中如何编写一个数的n次方(幂运算)?

    本文介绍了使用pow函数和自定义for循环计算幂的O(n)时间复杂度方法,然后重点讲解了快速幂算法的分治思想,以及从二进制角度的解释,包括如何通过位运算和循环迭代实现高效计算,给出了Java代码实现
    2024-07-07

最新评论