当前位置: 首页 > news >正文

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

映射文件内的增删查改

准备工作

  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.lryc.cn/news/530116.html

    相关文章:

  1. 【开源免费】基于Vue和SpringBoot的流浪宠物管理系统(附论文)
  2. nth_element函数——C++快速选择函数
  3. DNS缓存详解(DNS Cache Detailed Explanation)
  4. 课设:【ID0022】火车票售票管理系统(前端)
  5. Ruby 类和对象
  6. Java基础知识总结(三十八)--读取数据
  7. 交错定理和切比雪夫节点的联系与区别
  8. 大数据相关职位介绍之三(数据挖掘,数据安全 ,数据合规师,首席数据官,数据科学家 )
  9. GitHub Actions定时任务配置完全指南:从Cron语法到实战示例
  10. Van-Nav:新年,将自己学习的项目地址统一整理搭建自己的私人导航站,供自己后续查阅使用,做技术的同学应该都有一个自己网站的梦想
  11. Easy系列PLC尺寸测量功能块ST代码(激光微距仪应用)
  12. Manacher 最长回文子串
  13. 51单片机开发:独立键盘实验
  14. 组件框架漏洞
  15. OFDM系统仿真
  16. 基于单片机的盲人智能水杯系统(论文+源码)
  17. 安心即美的生活方式
  18. 安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
  19. 【cocos creator】【模拟经营】餐厅经营demo
  20. 前端 | 深入理解Promise
  21. Visual Studio Code修改terminal字体
  22. 自然语言处理-词嵌入 (Word Embeddings)
  23. 自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
  24. 【论文笔记】Fast3R:前向并行muti-view重建方法
  25. 谈谈你所了解的AR技术吧!
  26. upload labs靶场
  27. 搜索引擎友好:设计快速收录的网站架构
  28. 基于 oneM2M 标准的空气质量监测系统的互操作性
  29. 春晚舞台上的人形机器人:科技与文化的奇妙融合
  30. 零基础学习书生.浦语大模型-入门岛