Mybatis中sql映射文件中的增删查改

 更新时间:2025年10月09日 09:27:54   作者:我也有鱼鱼蒸  
本文主要介绍了Mybatis中sql映射文件中的增删查改,包括创建数据表、配置Maven项目、编写实体类和接口,以及mapper映射文件的增删查改操作,具有一定的参考价值,感兴趣的可以了解一下

映射文件内的增删查改

准备工作

  1. 准备一张数据表,用于进行数据库的相关操作。
  2. 新建maven工程, 导入mysql-connector-java和mybatis依赖。
  3. 新建一个实体类,类的字段要和数据表的数据对应
  4. 编写接口
  5. 编写mybatis主配置文件
public class User {
    private String name;
    private String gender;
    private int age;
    private String address;
    private String email;
    private String qq;

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getQq() {
        return qq;
    }

    public void setQq(String qq) {
        this.qq = qq;
    }
}
<?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"></transactionManager>

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

        </environment>
    </environments>
</configuration>
public class Main {
    public static void main(String[] args) throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
    }
}

后续只需在接口内添加相关方法,编写mapper映射文件进行测试,后面仅展示mapper映射文件。

新增数据

插入数据的方法sqlSession.insert("mapper映射文件内insert标签的id","传入的参数"),并且例如增删改的方法需要调用commit方法进行提交。

编写sql语句时,如果输入的参数为java对象类型,#{}表示接收java对象的属性名 

<insert id="add" parameterType="com.cc.UserMapper" >
insert into tb_userinfo (name,gender,age,address,email,qq) values (#{name},#{gender},#{age},#{address},#{email},#{qq});
</insert>

这里将user对象作为参数传入。 

        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
        //插入数据
        User user = new User("张四丰","女",25,"宁夏","1212@qq.com","987654");
        sqlSession.insert("add",user);
        sqlSession.commit();

删除数据

根据姓名删除数据:调用sqlSession.delete方法,同时传入一个字符串。

sqlSession.delete("delete","张大2");

    <delete id="delete" parameterType="String">
        delete from tb_userinfo where name = #{na}
    </delete>

修改数据

当要传入多个参数时,除了使用类将数据封装起来,还能使用map集合作为参数传入,注意map的key值要和#{}内的值一致。

    <update id="update" parameterType="map">
        update tb_userinfo set gender=#{gender},address=#{address} where name=#{nam}
    </update>
        Map<String,String> map = new HashMap<>();
        map.put("gender","女");
        map.put("nam","李思思");
        map.put("address","四川");
        sqlSession.update("update",map);

查询数据

查询所有

    <select id="seleteAll" resultType="com.cc.User">
        select * from tb_userinfo;
    </select>
        List<User> users = sqlSession.selectList("seleteAll");
        for(User u : users){
            System.out.print(u.getName());
            System.out.println(u.getAge());
        }

条件查询

    <select id="seleteByName" resultType="com.cc.User" parameterType="String">
        select * from tb_userinfo where name = #{name}
    </select>
        User user = sqlSession.selectOne("seleteByName", "李思思");
        System.out.println(user.getGender());
        System.out.println(user.getAddress());

模糊查询

    <select id="seleteLike" resultType="com.cc.User" parameterType="String">
        select * from tb_userinfo where name like #{name}
    </select>
        User o = sqlSession.selectOne("seleteLike", "%大%");
        System.out.println(o.getName());

映射文件的相关补充

#{}与${}

#{}与${}都能够接收输入的参数,区别是#{}表示一个占位符号,${}表示一个拼接符号,这样会导致sql注入,因此不建议使用${}

parameterType和resultType

parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。

到此这篇关于Mybatis中sql映射文件中的增删查改的文章就介绍到这了,更多相关Mybatis sql映射文件增删查改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Eclipse不自动编译java文件的终极解决方法

    Eclipse不自动编译java文件的终极解决方法

    这篇文章主要介绍了Eclipse不自动编译java文件的终极解决方法,需要的朋友可以参考下
    2015-12-12
  • Spark JDBC操作MySQL方式详细讲解

    Spark JDBC操作MySQL方式详细讲解

    这篇文章主要介绍了Spark JDBC操作MySQL方式,Spark SQL可以通过JDBC从传统的关系型数据库中读写数据,读取数据后直接生成的是DataFrame,然后再加上借助于Spark SQL丰富的API来进行各种操作
    2023-02-02
  • java实现图片上插入文字并保存

    java实现图片上插入文字并保存

    这篇文章主要为大家详细介绍了java实现图片上插入文字并保存,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Java实现订单超时自动取消的7种方案

    Java实现订单超时自动取消的7种方案

    在电商、外卖、票务等系统中,订单超时未支付自动取消是一个常见的需求,这个功能乍一看很简单,甚至很多初学者会觉得:"不就是加个定时器么?" 但真到了实际工作中,细节的复杂程度往往会超乎预期,本文给大家介绍了Java实现订单超时自动取消的7种方案
    2024-12-12
  • java8 filter方法、Predicate接口的使用方式

    java8 filter方法、Predicate接口的使用方式

    这篇文章主要介绍了java8 filter方法、Predicate接口的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 一个简单的Spring容器初始化流程详解

    一个简单的Spring容器初始化流程详解

    这篇文章主要给大家介绍了一个简单的Spring容器初始化流程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Java实现读取TXT和CSV文件内容

    Java实现读取TXT和CSV文件内容

    这篇文章主要为大家详细介绍了如何利用Java语言实现读取TXT和CSV文件内容的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-02-02
  • mybatis水平分表实现动态表名的项目实例

    mybatis水平分表实现动态表名的项目实例

    本文主要介绍了mybatis水平分表实现动态表名的项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • spring mvc实现文件上传与下载功能

    spring mvc实现文件上传与下载功能

    这篇文章主要为大家详细介绍了spring mvc实现文件上传与下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • java实现十六进制字符unicode与中英文转换示例

    java实现十六进制字符unicode与中英文转换示例

    当需要对一个unicode十六进制字符串进行编码时,首先做的应该是确认字符集编码格式,在无法快速获知的情况下,通过一下的str4all方法可以达到这一目的
    2014-02-02

最新评论