返回顶部
首页 > 资讯 > 后端开发 > JAVA >Mybatis(二):实现“增删改查”
  • 776
分享到

Mybatis(二):实现“增删改查”

mybatisjava数据库 2023-10-08 12:10:04 776人浏览 泡泡鱼
摘要

mybatis(二):实现“增删改查” 前言一、MyBatis的增删改查1、添加2、修改3、删除4、查询4.1 查询一个实体4.1 查询集合 二、MyBatis获取参数值的两种方式(

mybatis(二):实现“增删改查”



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、MyBatis的增删改查

1、添加

UserMapper接口:

         int insertUser();

UserMapper.xml

          <insert id="insertUser">                insert into t_user values(null,'张三','123',23,'女')          insert>

2、修改

UserMapper接口:

         void updateUser();

UserMapper.xml

                <update id = "updateUser">             update t_user set username = '张三' where id = 4        update>

3、删除

UserMapper接口:

        void deleteUser();

UserMapper.xml

                <delete id="deleteUser">             delete from t_user where id = 5        delete>

4、查询

4.1 查询一个实体

UserMapper接口:

        User getUserId();
UserMapper.xml
                  <select id="getUserById" resultType="com.ir.mybaits.pojo.User">          select * from t_user where id = 3     select>     

4.1 查询集合

UserMapper接口:

        List<User> getAllUser();

UserMapper.xml

          <select id="getAllUser" resultType="User">        select * from t_user    select>

注意:

⭕ 查询的标签select必须设置属性resultTyperesultMap,用于设置实体类和数据库表的映射关系
resultType:自动映射,用于属性名和表中字段名一致的情况
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况

⭕当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException,但是若查询的数据只有一条,可以使用实体类或集合作为返回值

二、MyBatis获取参数值的两种方式(重点)

MyBatis获取参数值的两种方式:${}#{}

${}的本质就是字符串拼接,使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;

#{}的本质就是占位符赋值,但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号

1、单个字面量类型的参数

⭕ 若mapper接口中的方法参数为单个的字面量类型,此时可以使用${}#{}以任意的名称获取参数的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

    User getUserByUsername(String username);

UserMapper.xml

     <select id="getUserByUsername" resultType="user">                             select * from t_user where username = #{username};    select>

UserMapperTest

       @Test    public void getUserByUsername(){        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);        System.out.println(userMapper.getUserByUsername("张三"));    }

2、多个字面量类型的参数

mapper接口方法的参数为多个时,此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储

  1. arg0,arg1…为键,以参数为值
  2. param1,param2…为键,以参数为值

因此只需要通过${}#{}访问map集合的键就可以获取相对应的 值,但是需要注意${}的单引号问题。

⭕ 代码演示:

UserMapper

        User checkLoginByParameter(String username,String passWord);

UserMapper.xml

      <select id="checkLoginByParameter" resultType="user">        select * from t_user where username=#{arg0} and password=#{arg1};    select>

UserMapperTest

     @Test    public void checkLoginByParam(){         UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);         User user = userMapper.checkLoginByParameter("张三","123");        System.out.println(user);    }

3、map集合类型的参数

⭕ 若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中,只需要通过${}#{}访问map集合的键就可以获取相对应的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

        User checkLoginByMap(Map<String, Object> map);

UserMapper.xml

     <select id="checkLoginByMap" resultType="user">        select * from t_user where username=#{username} and password=#{password};    select>

UserMapperTest

         @Test    public void checkLoginByMap(){        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);        Map<String,Object> map = new HashMap<>();        map.put("username","张三");        map.put("password","123");        User user = userMapper.checkLoginByMap(map);        System.out.println(user);    }

4、实体类类型的参数

⭕ 若mapper接口中的方法参数为实体类对象时,此时可以使用${}#{},通过访问实体类对象中的属性名获取属性值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

     Integer insertUser(User user);

UserMapper.xml

    <select id="insertUser" >        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})    select>

UserMapperTest

         @Test    public void insertUser(){        UserMapper userMapper = SqlSessionUtils.getSqlSession().getMapper(UserMapper.class);        Integer result = userMapper.insertUser(new User(null,"喜羊羊","123456",18,"男","123123@qq.com"));        System.out.println(result);    }

5、使用@Param标识参数

⭕ 可以通过@Param注解标识mapper接口中的方法参数,此时,会将这些参数放在map集合中,以如下两种方式来取值访问:

  1. @Param注解的value属性值为键,以参数为值;
  2. param1,param2…为键,以参数为值;

只需要通过${}#{}访问map集合的键就可以获取相对应的值,但是需要注意${}的单引号问题

⭕ 代码演示:

UserMapper

     User checkLoginByParam(@Param("username") String username, @Param("password") String password);

UserMapper.xml

        <select id="checkLoginByParam" resultType="User">        select * from t_user where username = #{username} and password = #{password}    select>

UserMapperTest

     @Test    public void testCheckLoginByParam(){        SqlSession sqlSession = SqlSessionUtils.getSqlSession();        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        User user = mapper.checkLoginByParam("admin", "123456");        System.out.println(user);    }

6、结论

将以上五种情况分为两类情况
⭕ 情况一:参数为实体类型
⭕ 情况二:参数都用@Param来修饰

三、MyBatis的各种查询功能

1、查询一个实体类对象

SelectMapper

        User getUserById(@Param("id") Integer id);

SelectMapper.xml

<select id="getUserById" resultType="user">         select * from t_user where id= #{id};    select>

SelectMapperTest

    @Test    public void getUserById(){        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);        User user = selectMapper.getUserById(3);        System.out.println(user);    }

2、查询一个list集合

SelectMapper

    List<User> getAllUser();

SelectMapper.xml

<select id="getAllUser" resultType="user">        select * from t_user;    select>

SelectMapperTest

    @Test    public void getAllUser(){        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);        List<User> list =  selectMapper.getAllUser();        for (User user:list             ) {            System.out.println(user);        }    }

3、查询单个数据

MyBatis中,对于Java中常用的类型都设置了类型别名

AliasMapped Type
_bytebyte
_char (since 3.5.10)char
_character (since 3.5.10)char
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
char (since 3.5.10)Character
character (since 3.5.10)Character
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
bigintegerBigInteger
objectObject
date[]Date[]
decimal[]BigDecimal[]
bigdecimal[]BigDecimal[]
biginteger[]BigInteger[]
object[]Object[]
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

SelectMapper

        Integer getCount();

SelectMapper.xml

 <select id="getCount" resultType="int">        select count(1) from t_user;    select>

SelectMapperTest

    @Test    public void getCount(){        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);        int result = selectMapper.getCount();        System.out.println(result);    }

4、查询一条数据为map集合

SelectMapper

    Map<String,Object> getUserByIdToMap(@Param"id"Integer id);

SelectMapper.xml

<select id="getUserByIdToMap" resultType="map">        select * from t_user where id=#{id}select>

SelectMapperTest

    @Test    public void getUserByIdToMap(){        SelectMapper selectMapper = SqlSessionUtils.getSqlSession().getMapper(SelectMapper.class);        System.out.println(selectMapper.getUserByIdToMap(5));        //{password=123456, sex=男, id=5, age=18, email=123123@qq.com, username=喜羊羊}    }

5、查询多条数据为map集合

方式一:
SelectMapper

    List<Map<String, Object>> getAllUserToMap();    

SelectMapper.xml

 <select id="getAllUserToMap" resultType="map">         select * from t_user    select>

SelectMapperTest

@Test    public void testGetAllUserToMap(){        SqlSession sqlSession = SqlSessionUtils.getSqlSession();        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);        System.out.println(mapper.getAllUserToMap());            }

方式二:
SelectMapper

   @MapKey("id")    Map<String, Object> getAllUserToMap();    

SelectMapper.xml

 <select id="getAllUserToMap" resultType="map">         select * from t_user    select>

SelectMapperTest

     @Test    public void testGetAllUserToMap(){        SqlSession sqlSession = SqlSessionUtils.getSqlSession();        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);        System.out.println(mapper.getAllUserToMap());            }

6、结论

MyBatis的各种查询功能:

⭕ 若查询出的数据只有一条
● 可以通过实体类对象接收
● 可以通过list集合接收
● 可以通过map集合接收
结果:
{password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin}

⭕ 若查询出的数据有多条
● 可以通过实体类类型的list集合接收
● 可以通过map类型的list集合接收
●可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中

⭕ 注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException

来源地址:https://blog.csdn.net/weixin_52533007/article/details/125621655

--结束END--

本文标题: Mybatis(二):实现“增删改查”

本文链接: https://lsjlt.com/news/425297.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mybatis(二):实现“增删改查”
    Mybatis(二):实现“增删改查” 前言一、MyBatis的增删改查1、添加2、修改3、删除4、查询4.1 查询一个实体4.1 查询集合 二、MyBatis获取参数值的两种方式(...
    99+
    2023-10-08
    mybatis java 数据库
  • Mybatis实现增删改查
    目录一.mybatis的配置1.1 添加相应的jar包1.2 配置mybatis.xml文件1.3 创建数据库1.4 创建实体类1.5 创建接口实现的方法1.6 配置UserMapp...
    99+
    2024-04-02
  • Mybatis如何实现增删改查
    这篇文章主要介绍了Mybatis如何实现增删改查,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mybatis实现增删改查一.mybatis的配置1.1 添加相应的jar包在l...
    99+
    2023-06-26
  • mybatis之增删改查
    目录jar包需要三个 连接数据库的以及mybatis的jar包下面创建数据库 复制到一個文档里面导入数据库即可mybatisUtils文件mybatis.xml配置文件Parking...
    99+
    2024-04-02
  • SpringBoot配置MyBatis-Plus实现增删查改
    目录1 MyBatis-Plus 2 Maven依赖3 Spring Boot配置4 UserEntity5 UserMapper6 Serv...
    99+
    2024-04-02
  • SpringBoot整合Mybatis简单实现增删改查
    目录前言第一:创建MySQL数据库第二:创建SpringBoot项目,引入需要的依赖包第三:创建程序目录和配置核心application.xml文件第四:依次编写Entity、Dao...
    99+
    2024-04-02
  • Mybatis Plus 增删改查的实现(小白教程)
    目录前言什么是 mybatis-plus?快速开始准备环境:准备数据表 IDEA中配置 maven 创建 spring boot 应用创建mapper接口添加@MapperScan ...
    99+
    2024-04-02
  • mybatis抽取基类BaseMapper增删改查的实现
    目录准备工作:1:数据库表2:准备实体类步骤1:编写工具类Tools:作用:用于驼峰和数据库字段的转换步骤2:自定义两个注解,分别用于类字段的排除和字义主键步骤3:自定义动态sql生...
    99+
    2024-04-02
  • Mybatis怎么实现动态增删改查功能
    这篇文章给大家分享的是有关Mybatis怎么实现动态增删改查功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Mybatis 流程简介最近在看 Mybatis 的源码,大致了解整个框架流程后便手写了一个特别简...
    99+
    2023-06-14
  • Mybatis怎么实现一个增删改查程序
    这篇文章主要介绍“Mybatis怎么实现一个增删改查程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis怎么实现一个增删改查程序”文章能帮助大家解决问题。idea新建Maven项目Myb...
    99+
    2023-06-30
  • Mybatis实现自动生成增删改查代码
    目录1 配置Mybatis插件2 创建库表3 配置参数4 运行插件5 编写其他代码使用 mybatis generator 自动生成代码,实现数据库的增删改查。 GitHub项目地址...
    99+
    2023-01-11
    Mybatis自动生成代码 Mybatis自动生成增删改查代码 Mybatis增删改查
  • MyBatis 单表的增删改查
    ✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:...
    99+
    2023-08-17
    mybatis java mysql
  • MongoDB实现增删改查
    一、增加 insert向数据库中插入集合 插入一条记录,传入集合 db..insert() db.students.insert({name:"唐僧",age:60,gender:"...
    99+
    2024-04-02
  • SpringBoot整合MyBatis实现增删改查(简单,详细)
    新建springboot工程 若选择https://start.spring.io下一步失败 则选择Custom,输入:https://start.aliyun.com后下一步 添加需要的依赖 添加其他依赖,全部依赖如下: ...
    99+
    2023-08-19
    mybatis spring boot 数据库 mysql
  • Mybatis步骤分解实现一个增删改查程序
    目录 1.idea新建Maven项目Mybatis-study 将项目里的src文件夹删掉 依次将此项目作为父项目 2.在Mybatis-study中新建模块mybatis-01 在...
    99+
    2024-04-02
  • 使用Spring+SpringMVC+Mybatis实现留言板的增删改查
    目的 1)掌握使用maven来创建SSM项目 2)掌握web.xml和pom.xml的使用 3)掌握Spring、SpringMVC和Mybatis,学会整合SSM 4)掌握的controller层注解@Autowired,@Requ...
    99+
    2023-09-01
    mysql tomcat idea
  • SQL如何实现增删改查
    这篇文章给大家分享的是有关SQL如何实现增删改查的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL 是用于访问和处理数据库的标准的计算机语言。注意哟,SQL是一门语言。而MyS...
    99+
    2024-04-02
  • python实现mongodb的增删改查
                                                          python实现mongodb的增删改查环境:192.168.122.1    python192.168.122.11  mong...
    99+
    2023-01-31
    python mongodb
  • MongoDB怎么实现增删改查
    这篇“MongoDB怎么实现增删改查”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MongoDB怎么实现增删改查”文章吧。一...
    99+
    2023-06-30
  • Oracle+mybatis如何实现对数据的增删改查功能
    这篇文章主要介绍了Oracle+mybatis如何实现对数据的增删改查功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是 MyBati...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作