2024/10/25日 日志 --》关于使用Mybatis进行增删改查 ---1 查询

查询分为了多个模块,以下为笔记即示例内容的展示。

查询所有:

点击查看代码
-- 查询所有:
--     @Test
--     public void testselectAll() throws Exception {
--         //1.获取SqlSessionFactory
--         //1.加载mybatis的核心配置文件,获取SqlSessionFactory
--         String resource = "mybatis-config.xml";
--         InputStream inputStream = Resources.getResourceAsStream(resource);
--         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-- 
--         //2.获取SqlSessionFactory对象
--         SqlSession sqlSession = sqlSessionFactory.openSession();
-- 
--         //3.获取Mapper接口的代理对象
--         BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
--        
-- 				//4.执行方法
--         List<Brand> brands=brandMapper.selectAll();
--         System.out.println(brands);
-- 
--         //5.释放资源
--         sqlSession.close();
-- 
--     }
--
--     <!--statement -->
--     <select id="selectAll" resultType="pojo.Brand">
--         select *
--         from tb_brand;
--     </select>
--  
-- *ResultMap的使用:
--
-- <mapper namespace="mapper.BrandMapper">
--     <!--
--         数据库表的字段名称和实体类的属性名称不一样,则不能自动封装数据。
--         *起别名:对不一样的列名起别名,让别名和实体类的属性名一样
--            *缺点:每次查询都要定义一次别名
--               *sql片段
--                  *缺点:不灵活
--         *resultMap:
--             1.定义resultMap标签
--             2. 使用resultMap替换resultType属性
-- 
-- 
--     -->
-- <!--       <sql id="brand_column">-->
-- <!--           id, brand_name as brandName, company_name as companyName, ordered, description, status-->
-- <!--        </sql>-->
-- <!--        <select id="selectAll" resultType="pojo.Brand">-->
-- <!--            select <include refid="brand_column"/>-->
-- <!--            from tb_brand;-->
-- <!--        </select>-->
-- 
--     <resultMap id="brandResultMap" type="pojo.Brand">
--         <!--
--             id:完成主键字段的映射
--                 column
--                 property
--             result:完成一般字段的映射
--         -->
--         <result column="brand_name" property="brandName"/>
--         <result column="company_name" property="companyName"/>
--     </resultMap>
-- 
--     <!--    <select id="selectAll" resultMap="brandResultMap">-->
--     <!--        select *-->
--     <!--        from tb_brand;-->
--     <!--    </select>-->
-- 
-- 
--     <!--statement -->
--     <select id="selectAll" resultType="pojo.Brand">
--         select *
--         from tb_brand;
--     </select>
-- 
--     <!--    <select id="selectAll" resultType="pojo.Brand">-->
--     <!--        select id, brand_name as brandName, company_name as companyName, ordered, description, status-->
--     <!--        from tb_brand;-->
--     <!--    </select>-->
-- 
-- </mapper>
--

查看详情:

点击查看代码
-- 查看详情:
-- @Test
--     public void testselectById() throws Exception {
--         //接受参数
--         int id =1;
-- 
--         //1.获取SqlSessionFactory
--         //1.加载mybatis的核心配置文件,获取SqlSessionFactory
--         String resource = "mybatis-config.xml";
--         InputStream inputStream = Resources.getResourceAsStream(resource);
--         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-- 
--         //2.获取SqlSessionFactory对象
--         SqlSession sqlSession = sqlSessionFactory.openSession();
-- 
--         //3.获取Mapper接口的代理对象
--         BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
--         //4.执行方法
--         Brand brand = brandMapper.selectById(id);
--         System.out.println(brand);
-- 
--         //5.释放资源
--         sqlSession.close();
-- 
--     }
--
--
--
-- 	1.参数占位符:
-- 	1)#{}:执行SQL时,会将#}占位符替换为?,将来自动设置参数值
-- 	2)${}:拼SQL。会存在SQL注入问题
-- 	3.使用时机:
-- 	*参数传递,都使用#{}
-- 	*如果要对表名、列名进行动态设置,只能使用S{}进行sql拼接。
-- 	2.parameterType:
-- 	*用于设置参数类型,该参数可以省略
-- 	3.SQL语句中特殊字符处理:
-- 	*转义字符
-- 	*<![CDATA[内容 ]]>  :CD提示
-- 例:
--
-- <!--
--     *参数占位符:
--         1.#{}:会将其替换为 ? ,为了防止SQL注入
--         2.${}:拼sql ,会存在SQL注入问题
--         3.使用时机
--             *参数传递的时候:#{}
--             *表名或者列名不固定可以用:${} ,存在SQL注入
--      *参数类型:paremeterType :可以省略
--      *特殊字符处理:
--            1.转义字符: 如<对应 &lt
--            2.CDATA区:如<![CDATA[
--                   <
--             ]]>
-- -->
--      <select id="selectById" resultMap="brandResultMap">
--         select  * from
--             tb_brand where id = #{id};
--      </select>

条件查询SQL与动态条件查询:
条件查询:

点击查看代码
-- 条件查询SQL与动态条件查询
--
-- SQL语句设置有多种参数形势:
-- ·1 散装参数:需要使用@Param("SQL参数占位符名称")
-- ·2 实体类封装参数:只需要保证SQL中的参数名和实体类属性名对应上
-- ·3 map集合:只需要保证SQL中的参数名和map集合的键的名称对应上
-- 例:
--     <select id="selectByCondition" resultMap="brandResultMap">
--         select  * from
--             tb_brand
--         where status = #{status}
--         and company_name like #{companyName}
--         and brand_name like #{brandName}
--     </select>
--  
-- /*
--   条件查询:
--   · 参数接收:
--       1.散装参数:如果方法中有多个参数,需要使用@Param("SQL参数占位符名称")
--       2.对象参数:对象的属性名称和对应的参数占位符名称一致
--       3.map集合参数:map集合的键的名称和对应的参数占位符名称一致
--    */
--     public void testselectByCondition() throws Exception {
--         //接受参数
--         int status =1;
--         String companyName ="华为";
--         String brandName ="华为";
--         //处理参数
--         companyName = "%"+companyName+"%";
--         brandName = "%"+brandName+"%";
-- 
--         //封装参数
-- //        Brand brand = new Brand();
-- //        brand.setStatus(status);
-- //        brand.setCompanyName(companyName);
-- //        brand.setBrandName(brandName);
-- 
--         Map map = new HashMap();
-- //        map.put("status",status);
--         map.put("companyName",companyName);
-- //        map.put("brandName",brandName);
-- 
--         //1.获取SqlSessionFactory
--         //1.加载mybatis的核心配置文件,获取SqlSessionFactory
--         String resource = "mybatis-config.xml";
--         InputStream inputStream = Resources.getResourceAsStream(resource);
--         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-- 
--         //2.获取SqlSessionFactory对象
--         SqlSession sqlSession = sqlSessionFactory.openSession();
-- 
--         //3.获取Mapper接口的代理对象
--         BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
--         //4.执行方法
-- //        ArrayList<Brand> brands = brandMapper.selectByCondition(status,companyName,brandName);
-- //        ArrayList<Brand> brands = brandMapper.selectByCondition(brand);
--         ArrayList<Brand> brands = brandMapper.selectByCondition(map);
--         System.out.println(brands);
-- 
--         //5.释放资源
--         sqlSession.close();
-- 
--     }
--
-- 模糊查询
--    <!--    <select id="selectByCondition" resultMap="brandResultMap">-->
--     <!--        select  * from-->
--     <!--            tb_brand-->
--     <!--        where-->
--     <!--            status = #{status}-->
--     <!--        and company_name like #{companyName}-->
--     <!--        and brand_name like #{brandName}-->
--     <!--    </select>-->
--  以下为优化及条件判断方法
--     <!--
--            * if: <if> </if> 条件判断
--                  *test: 逻辑表达式
--            * 问题解决:
--                 *恒等式 1 = 1
--         <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--         where 1 = 1
--         <if test="status != null">
--             and status = #{status}
--         </if>
--         <if test="companyName != null and companyName !='' ">
--             and company_name like #{companyName}
--         </if>
--         <if test="brandName !=null and brandName !='' ">
--             and brand_name like #{brandName}
--         </if>
--     </select>
--             *<where> 替换 where 关键字
--     <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--             <where>
--                 <if test="status != null">
--                     status = #{status}
--                 </if>
--                 <if test="companyName != null and companyName !='' ">
--                     and company_name like #{companyName}
--                 </if>
--                 <if test="brandName !=null and brandName !='' ">
--                     and brand_name like #{brandName}
--                 </if>
--             </where>
--     </select>
-- 条件查询最终如下:
--     -->
--     <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--         <where>
--             <if test="status != null">
--                 status = #{status}
--             </if>
--             <if test="companyName != null and companyName !='' ">
--                 and company_name like #{companyName}
--             </if>
--             <if test="brandName !=null and brandName !='' ">
--                 and brand_name like #{brandName}
--             </if>
--         </where>
--     </select>
--

动态SQL

点击查看代码
-- --  动态SQL
-- if: 用于判断参数是否有值,使用test属性进行条件判断
--          *存在问题:第一个条件不需要逻辑运算符
--          *解决方案:
--               · 使用恒等式让所有条件格式一样
--               · <where>标签替换where关键字
-- 例:
--
-- @Test
--     public void testselectByConditionSingle() throws Exception {
--         //接受参数
--         int status =1;
--         String companyName ="华为";
--         String brandName ="华为";
--         //处理参数
--         companyName = "%"+companyName+"%";
--         brandName = "%"+brandName+"%";
-- 
--         //封装参数
--         Brand brand = new Brand();
-- //        brand.setStatus(status);
-- //        brand.setCompanyName(companyName);
-- //        brand.setBrandName(brandName);
-- 
--         //1.获取SqlSessionFactory
--         //1.加载mybatis的核心配置文件,获取SqlSessionFactory
--         String resource = "mybatis-config.xml";
--         InputStream inputStream = Resources.getResourceAsStream(resource);
--         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-- 
--         //2.获取SqlSessionFactory对象
--         SqlSession sqlSession = sqlSessionFactory.openSession();
-- 
--         //3.获取Mapper接口的代理对象
--         BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
--         //4.执行方法
--         ArrayList<Brand> brands = brandMapper.selectByConditionSingle(brand);
--         System.out.println(brands);
-- 
--         //5.释放资源
--         sqlSession.close();
-- 
--     }
-- <!--    <select id="selectByConditionSingle" resultMap = "brandResultMap">-->
--     <!--        select-->
--     <!--            *from tb_brand-->
--     <!--        where-->
--     <!--        <choose> &lt;!&ndash;相当于 switch&ndash;&gt;-->
--     <!--            <when test="status!=null"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                status = #{status}-->
--     <!--            </when>-->
--     <!--            <when test="companyName != null and companyName !=''"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                company_name like #{companyName}-->
--     <!--            </when>-->
--     <!--            <when test="brandName!=null and companyName != ''"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                brand_name like #{brandName}-->
--     <!--            </when>-->
--     <!--            <otherwise>&lt;!&ndash; 相当于default&ndash;&gt;-->
--     <!--                1 = 1-->
--     <!--            </otherwise>-->
--     <!--        </choose>-->
--     <!--    </select>-->
--     <select id="selectByConditionSingle" resultMap="brandResultMap">
--         select
--         *from tb_brand
--         <where>
--             <choose> <!--相当于 switch-->
--                 <when test="status!=null"> <!-- 相当于case-->
--                     status = #{status}
--                 </when>
--                 <when test="companyName != null and companyName !=''"> <!-- 相当于case-->
--                     company_name like #{companyName}
--                 </when>
--                 <when test="brandName!=null and companyName != ''"> <!-- 相当于case-->
--                     brand_name like #{brandName}
--                 </when>
--             </choose>
--         </where>
--     </select>
-- 
--
--    <!--
--     动态条件查询
--            * if: <if> </if> 条件判断
--                  *test: 逻辑表达式
--            * 问题解决:
--                 *恒等式 1 = 1
--         <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--         where 1 = 1
--         <if test="status != null">
--             and status = #{status}
--         </if>
--         <if test="companyName != null and companyName !='' ">
--             and company_name like #{companyName}
--         </if>
--         <if test="brandName !=null and brandName !='' ">
--             and brand_name like #{brandName}
--         </if>
--     </select>
--             *<where> 替换 where 关键字
--     <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--             <where>
--                 <if test="status != null">
--                     status = #{status}
--                 </if>
--                 <if test="companyName != null and companyName !='' ">
--                     and company_name like #{companyName}
--                 </if>
--                 <if test="brandName !=null and brandName !='' ">
--                     and brand_name like #{brandName}
--                 </if>
--             </where>
--     </select>
--   -->

单条件的动态查询--从多个条件中选择一个

点击查看代码
-- 单条件的动态条件查询
-- ·从多个条件中选择一个
-- --》choose(when,otherwise):选择,类似于java中的Switch语句
-- 例:
--    -->
--     <select id="selectByCondition" resultMap="brandResultMap">
--         select * from
--         tb_brand
--             <where>
--                 <if test="status != null">
--                     status = #{status}
--                 </if>
--                 <if test="companyName != null and companyName !='' ">
--                     and company_name like #{companyName}
--                 </if>
--                 <if test="brandName !=null and brandName !='' ">
--                     and brand_name like #{brandName}
--                 </if>
--             </where>
--     </select>
--     <!--    <select id="selectByConditionSingle" resultMap = "brandResultMap">-->
--     <!--        select-->
--     <!--            *from tb_brand-->
--     <!--        where-->
--     <!--        <choose> &lt;!&ndash;相当于 switch&ndash;&gt;-->
--     <!--            <when test="status!=null"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                status = #{status}-->
--     <!--            </when>-->
--     <!--            <when test="companyName != null and companyName !=''"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                company_name like #{companyName}-->
--     <!--            </when>-->
--     <!--            <when test="brandName!=null and companyName != ''"> &lt;!&ndash; 相当于case&ndash;&gt;-->
--     <!--                brand_name like #{brandName}-->
--     <!--            </when>-->
--     <!--            <otherwise>&lt;!&ndash; 相当于default&ndash;&gt;-->
--     <!--                1 = 1-->
--     <!--            </otherwise>-->
--     <!--        </choose>-->
--     <!--    </select>-->
--     <select id="selectByConditionSingle" resultMap = "brandResultMap">
--         select
--         *from tb_brand
--         <where>
--             <choose> <!--相当于 switch-->
--                 <when test="status!=null"> <!-- 相当于case-->
--                     status = #{status}
--                 </when>
--                 <when test="companyName != null and companyName !=''"> <!-- 相当于case-->
--                     company_name like #{companyName}
--                 </when>
--                 <when test="brandName!=null and companyName != ''"> <!-- 相当于case-->
--                     brand_name like #{brandName}
--                 </when>
--             </choose>
--         </where>
--     </select>SS
--
---------------Moonbeams.
posted @   Moonbeamsc  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
返回顶端
点击右上角即可分享
微信分享提示