mybatis动态SQL

本文详细介绍了MyBatis中动态SQL的使用,特别是`if`标签的运用,通过实例展示了如何根据学生信息进行条件查询。包括只输入用户名的模糊匹配,只输入性别的完全匹配,以及同时输入用户名和性别的组合查询。代码示例中包含了SpringMVC的配置和测试方法,演示了动态SQL在实际项目中的应用。
摘要由CSDN通过智能技术生成

Working ability is greater than attitude.
talk is cheap, show me the code,make a better result.

目录

在这里插入图片描述

概述

mybatis 如何使用

需求:

需求整理如下:
1.约定由于配置
2.整合jar,自动配置

设计思路

暂无

数据准备

1. if 标签

if 标签是我们最常使用的。在查询、删除、更新的时候很可能会使用到。必须结合 test 属性联合使用。

2.动态 SQL

/**
 * 根据输入的学生信息进行条件检索
 * 1\. 当只输入用户名时, 使用用户名进行模糊检索;
 * 2. 当只输入邮箱时, 使用性别进行完全匹配
 * 3. 当用户名和性别都存在时, 用这两个条件进行查询匹配的用
 * @param student
 * @return
 */
    List<Student> selectByStudentSelective(Student student);

拓展Demo实现

相关代码如下:

1.启动tomcat

  <select id="selectByStudentSelective" resultMap="BaseResultMap" parameterType="com.homejim.mybatis.entity.Student">
    select
    <include refid="Base_Column_List" />
    from student
    where 1=1
    <if test="name != null and name !=''">
      and name like concat('%', #{name}, '%')
    </if>
    <if test="sex != null">
      and sex=#{sex}
    </if>
  </select>

    

/**
 * @Description:SpringMVC注解配置,视图解析器  
 * 
 
 * @date 2020年8月11日
 */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.hutao.springboot.write.controller" })
public class SpringMvcConfig extends WebMvcConfigurationSupport {
	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setPrefix("/WEB-INF/page/");
		viewResolver.setSuffix(".jsp");
		viewResolver.setExposeContextBeansAsAttributes(true);
		return viewResolver;
	}
}

2.自己的方法:

     @Test
    public void selectByStudent() {
        SqlSession sqlSession = null;
        sqlSession = sqlSessionFactory.openSession();
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);

        Student search = new Student();
        search.setName("明");

        System.out.println("只有名字时的查询");
        List<Student> studentsByName = studentMapper.selectByStudentSelective(search);
        for (int i = 0; i < studentsByName.size(); i++) {
            System.out.println(ToStringBuilder.reflectionToString(studentsByName.get(i), ToStringStyle.MULTI_LINE_STYLE));
        }

        search.setName(null);
        search.setSex((byte) 1);
        System.out.println("只有性别时的查询");
        List<Student> studentsBySex = studentMapper.selectByStudentSelective(search);
        for (int i = 0; i < studentsBySex.size(); i++) {
            System.out.println(ToStringBuilder.reflectionToString(studentsBySex.get(i), ToStringStyle.MULTI_LINE_STYLE));
        }

        System.out.println("姓名和性别同时存在的查询");
        search.setName("明");
        List<Student> studentsByNameAndSex = studentMapper.selectByStudentSelective(search);
        for (int i = 0; i < studentsByNameAndSex.size(); i++) {
            System.out.println(ToStringBuilder.reflectionToString(studentsByNameAndSex.get(i), ToStringStyle.MULTI_LINE_STYLE));
        }

        sqlSession.commit();
        sqlSession.close();
    }

实验效果:

分析:

待补充

小结:

主要讲述了mybatis原理和简单实现,里面有许多不足,请大家指正~

参考资料和推荐阅读

  1. 超全MyBatis动态SQL详解!( 看完SQL爽多了)

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执于代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值