对象关系映射技术1——增删改查

本文详细介绍了Mybatis的基本使用,包括Mybatis简介、开发步骤、查询、增加/插入、删除和修改操作。通过实例展示了如何配置Mybatis坐标、创建数据表、编写实体类、映射文件及测试类,实现对数据库的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis简介

1.Mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
2.Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
3.最后Mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了java、api底层访问细节,使我们不用与jdbc、api打交道,就可以完成对数据库的持久化操作。
官方网址: https://mybatis.org/mybatis-3/

Mybatis开发步骤

(1)添加Mybatis坐标
(2)创建user数据表
(3)编写User实体类
(4)编写映射文件stuMapper.xml
(5)编写核心文件SqlMapper.xml
(6)编写测试类

新建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询

(1)添加Mybatis坐标

在pom.xml中添加

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.21</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
(2)创建user数据表

在这里插入图片描述

(3)编写User实体类

1.在java下建包com.nky.myapplication
在这里插入图片描述
2.在java中的包建stu.java实体类
添加get和set方法
在这里插入图片描述

package com.nky.myapplication;

public class stu {
    private int uid;
    private String name;
    private String pwd;

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    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;
    }
}

(4)编写映射文件stuMapper.xml

1.在resources下建包com.nky.myapplication
2.在包中创建stuMapper.xml
3.在stuMapper.xml中添加标题头

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

4.创建节点mapper,属性namespace命名空间(给映射表的名字id1)
不需要参数类型,需要返回类型resultType(返回的是实体)
select元素:
属性id(id2)(调用的时候写id1下的id2就是这条select语句)
resultType返回类型resultType="com.nky.myapplication.stu"
在这里插入图片描述在这里插入图片描述

(5)编写核心文件SqlMapper.xml

1.在resources下建SqlMapper.xml
2.在SqlMapper.xml中添加标题头

<?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">

3.configuration标签

<?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配置环境数据库使用哪个连接-->
    <environments default="default1">
        <!--配置具体连接到哪一个数据库-->
        <environment id="default1">
            <!--transactionManager,配置事物控制类型为JDBC-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库连接池
                       POOLED,mybatis内置的数据库连接池(推荐使用)
                       UNPOOLED,不使用连接池
                       JNDI,使用服务器tomcat容器的数据库连接池
           -->
            <dataSource type="POOLED">
                <!--mysql驱动类-->
                <property name="driver" value="com.mysql.jdbc.Driver"></property>
                <!--数据库连接字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/student"></property>
                <!--username数据库用户名-->
                <property name="username" value="root"></property>
                <!--password数据库密码-->
                <property name="password" value=""></property>
            </dataSource>

        </environment>
    </environments>
    <!--引入映射文件stuMapper.xml-->
    <mappers>
        <mapper resource="com.nky.myapplication/stuMapper.xml"></mapper>
    </mappers>

</configuration>

在这里插入图片描述

(6)编写测试类

在java下的包com.nky.myapplication下创建javamain测试类
1.写主方法
2.读sqlMapper.xml获取输入流Resources.getResourceAsStream(“sqlMapper.xml”);
注意:
1)Resources选org.apache.ibatis.io
在这里插入图片描述
2)写完记得抛异常
3. new SqlSessionFactoryBuilder().build方法(resourceAsStream);
4. 打开连接 build .openSession();
5. sqlSession .selectList()对应stuMapper.xml的SELECT * FROM stu

//返回类型是stu
 List<stu> ls = sqlSession.selectList("stuMapper.findall");

6.for循环显示出来

 for (int i = 0; i<ls.size(); i++){
            System.out.println(ls.get(i).getUid() + "," + ls.get(i).getName() +"," + ls.get(i).getPwd());
        }

在这里插入图片描述
运行结果:
在这里插入图片描述
总结查询
在这里插入图片描述
1.添加Mybatis坐标
在这里插入图片描述
2.建表
在这里插入图片描述
3.编写User实体类
在这里插入图片描述
4.编写映射文件stuMapper.xml
在这里插入图片描述
5.编写核心文件SqlMapper.xml
在这里插入图片描述
6.编写测试类
在这里插入图片描述

查询单个表总共数据数量

(1)在映射文件stuMapper.xml
不需要参数类型,需要返回类型resultType(id是integer类型)

 <select id="cxsl" resultType="integer">
    SELECT count(*) FROM stu
 </select>

(2)编写测试类
查询数据库条目 int a= sqlSession .selectOne(“stuMapper.cxsl”);有参数就填参数parameterType,没参数就这么写
System.out.println(a);
在这里插入图片描述
数据库数据:
在这里插入图片描述
运行结果:
在这里插入图片描述

增加/插入

(上面有的步骤就不再重复啦~)
(1)在映射文件stuMapper.xml
需要parameterType参数类型(插入的是实体),不需要返回值
#{name},#{pwd}:#{}括号里是要填实体stu.java对应属性的名字

  <insert id="charu" parameterType="com.nky.myapplication.stu">
        INSERT INTO stu (name,pwd) values (#{name},#{pwd})
  </insert>

在这里插入图片描述
(2)编写测试类
在java下的包com.nky.myapplication下创建javamain测试类
1.写主方法
2.读sqlMapper.xmlResources.getResourceAsStream(“sqlMapper.xml”);
3. new SqlSessionFactoryBuilder().build方法(resourceAsStream);
4. 打开连接 build .openSession();
5.sqlSession .insert(“stuMapper.xml的id:stuMapper.charu”,实体:s);对应stuMapper.xml的** INSERT INTO stu (name,pwd) values (#{name},#{pwd})**
6.创建上一步实体s
stu s = new stu();
s.setName(“aaa”);
s.setPwd(“654321”);
7.事务一定要commit(没有不执行)
sqlSession .commit();
8.关闭
sqlSession .close();
在这里插入图片描述
结果:
在这里插入图片描述
查询表中插入成功:
在这里插入图片描述

删除

(上面有的步骤就不再重复啦~)
(1)在映射文件stuMapper.xml
需要parameterType参数类型(删除的是实体),不需要返回值
#{uid}:#{}括号里是要填实体stu.java对应属性的名字uid

  <delete id="shanchu" parameterType="com.nky.myapplication.stu">
     DELETE FROM stu where  uid=#{uid}
  </delete>

在这里插入图片描述
(2)编写测试类
在java下的包com.nky.myapplication下创建javamain测试类
1.写主方法
2.读sqlMapper.xmlResources.getResourceAsStream(“sqlMapper.xml”);
3. new SqlSessionFactoryBuilder().build方法(resourceAsStream);
4. 打开连接 build .openSession();
5.sqlSession .delete(“stuMapper.xml的id:stuMapper.shanchu”,实体:s);对应stuMapper.xml的** DELETE FROM stu where uid=#{uid}**
6.创建上一步实体s
stu s = new stu();
s.setUid(7);
7.事务一定要commit(没有不执行)
sqlSession .commit();
8.关闭
sqlSession .close();
在这里插入图片描述
结果:
在这里插入图片描述
查询表中删除成功:
在这里插入图片描述

删除第二种简单写法(根据id的简单删除)

(1)在映射文件stuMapper.xml
需要parameterType参数类型(id是integer类型),不需要返回值
#{uid}:#{}括号里是要填实体stu.java对应属性的名字uid

   <delete id="shanchu2" parameterType="integer">
      DELETE FROM stu where uid=#{uid}
   </delete>

在这里插入图片描述
(2)编写测试类
在这里插入图片描述
也是一样成功的

修改

(上面有的步骤就不再重复啦~)
(1)在映射文件stuMapper.xml
需要parameterType参数类型(修改的是实体),不需要返回值
#{name},#{pwd},#{uid}:#{}括号里是要填实体stu.java对应属性的名字

 <update id="xiugai" parameterType="com.nky.myapplication.stu">
    UPDATE stu set name = #{name},pwd =#{pwd} WHERE  uid = #{uid}
 </update>

在这里插入图片描述
(2)编写测试类
在java下的包com.nky.myapplication下创建javamain测试类
1.写主方法
2.读sqlMapper.xmlResources.getResourceAsStream(“sqlMapper.xml”);
3. new SqlSessionFactoryBuilder().build方法(resourceAsStream);
4. 打开连接 build .openSession();
5.sqlSession .update(“stuMapper.xml的id:stuMapper.xiugai”,实体:s);对应stuMapper.xml的** UPDATE stu set name = #{name},pwd =#{pwd} WHERE uid = #{uid}**
6.创建上一步实体s
stu s = new stu();
s.setUid(5);
s.setName(“aaa”);
s.setPwd(“123”);
7.事务一定要commit(没有不执行)
sqlSession .commit();
8.关闭
sqlSession .close();
在这里插入图片描述
结果:
在这里插入图片描述
查询表中修改成功:
在这里插入图片描述
注意:增删改是需要commit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值