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

ops/2025/2/1 13:56:24/

映射文件内的增删查改

准备工作

  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 configurationPUBLIC "-//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指定类型的对象。


    http://www.ppmy.cn/ops/154760.html

    相关文章

    K8S中数据存储之配置存储

    配置存储 在Kubernetes中&#xff0c;ConfigMap和Secret是两种核心资源&#xff0c;用于存储和管理应用程序的配置数据和敏感信息。理解它们的功能和最佳实践对于提高Kubernetes应用程序的安全性和配置管理的效率至关重要。 ConfigMap ConfigMap是一种API对象&#xff0c;允许…

    gradle和maven的区别以及怎么选择使用它们

    目录 区别 1. 配置方式 2. 依赖管理 3. 构建性能 4. 灵活性和扩展性 5. 多项目构建 如何选择使用 选择 Maven 的场景 选择 Gradle 的场景 区别 1. 配置方式 Maven&#xff1a; 使用基于 XML 的 pom.xml 文件进行配置。所有的项目信息、依赖管理、构建插件等都在这个文…

    ios swift画中画技术尝试

    继上篇&#xff1a;iOS swift 后台运行应用尝试失败-CSDN博客 为什么想到画中画&#xff0c;起初是看到后台模式里有一个picture in picture&#xff0c;去了解了后发现这个就是小窗口视频播放&#xff0c;方便用户执行多任务。看小窗口视频的同时&#xff0c;可以作其他的事情…

    实验十 数据库完整性实验

    实验十 数据库完整性实验 一、实验目的 1、熟悉通过SQL对数据进行完整性控制。熟练掌握数据库三类完整性约束&#xff08;实体完整性、用户自定义完整性、参照完整性&#xff09; 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键&#xff08;PRIMARY KEY&#xff09;约…

    鸿蒙开发在onPageShow中数据加载不完整的问题分析与解决

    API Version 12 1、onPageShow()作什么的 首先说明下几个前端接口的区别&#xff1a; ArkUI-X的aboutToAppear()接口是一个生命周期接口&#xff0c;用于在页面即将显示之前调用。 在ArkUI-X中&#xff0c;aboutToAppear()接口是一个重要的生命周期接口&#xff0c;它会在页…

    【Validator】字段验证器struct与多层级验证,go案例

    标签用法总结表 标签功能代码实例required字段必填Name string \v:“required”alphaunicode验证字段是否只包含字母和 Unicode 字符Name string \v:“alphaunicode”gte验证字段值是否大于等于指定值Age uint8 \v:“gte10”lte验证字段值是否小于等于指定值Age uint8 \v:“lt…

    android安卓用Rime

    之前 [1] 在 iOS 配置用上自改方案 [2]&#xff0c;现想在安卓也用上。Rime 主页推荐了两个安卓平台支持 rime 的输入法 [3]&#xff1a; 同文 Tongwen Rime Input Method Editor&#xff0c;但在我的 Realme X2 Pro 上似乎有 bug&#xff1a;弹出的虚拟键盘只有几个 switcher…

    JVM深入学习(二)

    目录 一.本地方法接口 二.执行引擎 三.垃圾回收 什么是垃圾对象&#xff1f; 垃圾回收发展 哪些区域会出现垃圾回收 内存溢出与内存泄漏 Stop the World 四.垃圾回收阶段算法 1.垃圾标记阶段 ①引用计数算法 ②可达性分析算法(根搜索算法) finalize()方法对象复活 2…