• MyBatis的基本操作


    一、MyBatis的增删改查

    1、添加

    
    <insert id="insertUser">
    	insert into t_user values(null,'admin','123456',23,'男')
    insert>
    
    • 1
    • 2
    • 3
    • 4

    2、删除

    
    <delete id="deleteUser">
    	delete from t_user where id = 7
    delete>
    
    • 1
    • 2
    • 3
    • 4

    3、修改

    
    <update id="updateUser">
    	update t_user set username='ybc',password='123' where id = 6
    update>
    
    • 1
    • 2
    • 3
    • 4

    4、查询一个实体类对象

    
    <select id="getUserById" resultType="com.atguigu.mybatis.bean.User">
    	select * from t_user where id = 2
    select>
    
    • 1
    • 2
    • 3
    • 4

    5、查询集合

    
    <select id="getUserList" resultType="com.atguigu.mybatis.bean.User">
    	select * from t_user
    select>
    
    • 1
    • 2
    • 3
    • 4

    注意:
    1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射
    关系
    resultType:自动映射,用于属性名和表中字段名一致的情况
    resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
    2、当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常
    TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

    二、MyBatis的各种查询功能

    1、查询一个实体类对象

    /**
    * 根据用户id查询用户信息
    * @param id
    * @return
    */
    User getUserById(@Param("id") int id);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    
    <select id="getUserById" resultType="User">
    	select * from t_user where id = #{id}
    select>
    
    • 1
    • 2
    • 3
    • 4

    2、查询一个list集合

    /**
    * 查询所有用户信息
    * @return
    */
    List<User> getUserList();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    
    <select id="getUserList" resultType="User">
    	select * from t_user
    select>
    
    • 1
    • 2
    • 3
    • 4

    3、查询单个数据

    /**
    * 查询用户的总记录数
    * @return
    * 在MyBatis中,对于Java中常用的类型都设置了类型别名
    * 例如:java.lang.Integer-->int|integer
    * 例如:int-->_int|_integer
    * 例如:Map-->map,List-->list
    */
    int getCount();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    
    <select id="getCount" resultType="_integer">
    	select count(id) from t_user
    select>
    
    • 1
    • 2
    • 3
    • 4

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

    /**
    * 根据用户id查询用户信息为map集合
    * @param id
    * @return
    */
    Map<String, Object> getUserToMap(@Param("id") int id);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    
    <select id="getUserToMap" resultType="map">
    	select * from t_user where id = #{id}
    select>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    1. 方式一:
    /**
    * 查询所有用户信息为map集合
    * @return
    * 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
    时可以将这些map放在一个list集合中获取
    */
    List<Map<String, Object>> getAllUserToMap();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    
    <select id="getAllUserToMap" resultType="map">
    	select * from t_user
    select>
    
    • 1
    • 2
    • 3
    • 4
    1. 方式二:
    /**
    * 查询所有用户信息为map集合
    * @return
    * 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并
    且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的
    map集合
    */
    @MapKey("id")
    Map<String, Object> getAllUserToMap();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    
    <select id="getAllUserToMap" resultType="map">
    	select * from t_user
    select>
    结果:
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、特殊SQL的执行

    1、模糊查询

    /**
    * 测试模糊查询
    * @param mohu
    * @return
    */
    List<User> testMohu(@Param("mohu") String mohu);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    
    <select id="testMohu" resultType="User">
    
    
    	select * from t_user where username like "%"#{mohu}"%"
    select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、批量删除

    /**
    * 批量删除
    * @param ids
    * @return
    */
    int deleteMore(@Param("ids") String ids);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    
    <delete id="deleteMore">
    	delete from t_user where id in (${ids})
    delete>
    
    • 1
    • 2
    • 3
    • 4

    正确sql:delete from t_user where id in (1,2,3)
    如果是#{}:delete from t_user where id in (‘1,2,3’)×
    如果是${}:delete from t_user where id in (1,2,3)

    3、动态设置表名

    /**
    * 动态设置表名,查询所有的用户信息
    * @param tableName
    * @return
    */
    List<User> getAllUser(@Param("tableName") String tableName);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    
    <select id="getAllUser" resultType="User">
    	select * from ${tableName}
    select>
    
    • 1
    • 2
    • 3
    • 4

    4、添加功能获取自增的主键

    t_clazz(clazz_id,clazz_name)
    t_student(student_id,student_name,clazz_id)
    1、添加班级信息
    2、获取新添加的班级的id
    3、为班级分配学生,即将某学的班级id修改为新添加的班级的id

    /**
    * 添加用户信息
    * @param user
    * @return
    * useGeneratedKeys:设置使用自增的主键
    * keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参
    数user对象的某个属性中
    */
    int insertUser(User user);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    	insert into t_user values(null,#{username},#{password},#{age},#{sex})
    insert>
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
    【matplotlib 实战】--南丁格尔玫瑰图
    vue3项目应用font awesome6
    全景分割的自监督学习
    Axure RP 9 for mac 高保真原型图 - 案例18 【导航栏-展开、收起】导入元件库
    ABAP 长文本操作
    Java Gradle
    【数仓】flume常见配置总结,以及示例
    Python复习知识点(二)
    致远OA A8 htmlofficeservlet 任意文件上传漏洞 漏洞复现
  • 原文地址:https://blog.csdn.net/qq_41428418/article/details/132696435