栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis 09

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis 09

9. 1 动态 SQL

动态 SQL 就是 指 根据 不同的条件 生成 不同的 SQL 语句。也就是说 它的 自适应能力 会很强,会减少 我们 手写的 一些SQL。

比如说 在 项目开发的时候,我们可能会遇到 不同条件 进行 SQL 拼接的问题。

这个时候 其实 动态 SQL 就 显得 非常 牛B 了。但是 写起来 其实 也不太开心,只能说 重复的 再遇到 这种 问题的时候,复制粘贴 就好了。不需要考虑太多的事情。稍微改改就 ok。


9.1.1 环境搭建
CREATE TABLE `blog`(
`id` VARCHAr(50) NOT NULL COMMENT '博客id',
`title` VARCHAr(100) NOT NULL COMMENT '博客标题',
`author` VARCHAr(30) NOT NULL COMMENT '博客作者',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`views` INT(30) NOT NULL COMMENT '浏览量'
)ENGINE=INNODB DEFAULT CHARSET=utf8;

字段名 下划线问题:在 早些时候,特别是 Oracle 是不允许 大小写的。所以 我们就要写 下划线。也就 有了 create_Time 类似于 这样的字段名就出现了。


那么 怎么解决呢这个问题呢?字段名 现在 和 属性名 对应不上呀。

答案是:直接 在 mybatis-config.xml 进行 配置即可。

    
        
    

写一个 UUID 的 工具类,因为我们 的 主键id 如果是 自增的,那么 实际上 int 类型的 那个 默认 id 是没啥意义的。那还不如 压根 就让它 随机生成了。

package top.muquanyu.utils;

import org.junit.Test;

import java.util.UUID;

@SuppressWarnings("all") // 抑制掉 警告
public class IDutils {
    public static String getId(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }

    @Test
    public void test(){
        System.out.println(getId());
    }
}


当然 我们一定要注意,除了 查询 之外,剩下的 增删改 都是需要 提交事务的,否则 数据 不会 有更新变动。

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import top.muquanyu.Mapper.BlogMapper;
import top.muquanyu.pojo.Blog;
import top.muquanyu.utils.IDutils;
import top.muquanyu.utils.MybatisUtils;

import java.util.Date;

public class MyTest {
    @Test
    public void addInitBlog(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Blog blog = new Blog();
        blog.setId(IDutils.getId());
        blog.setTitle("aaaa");
        blog.setAuthor("mqy");
        blog.setCreateTime(new Date());
        blog.setViews(9999);

        mapper.addBlog(blog);
        blog.setId(IDutils.getId());
        blog.setTitle("bbbb");
        blog.setAuthor("mqy");
        mapper.addBlog(blog);
        blog.setId(IDutils.getId());
        blog.setTitle("cccc");
        blog.setAuthor("mqy");
        mapper.addBlog(blog);

        sqlSession.commit();// 提交事务

        sqlSession.close();
    }
}


9.2.1 动态 SQL 之 IF 语句
  1. 解决 查询 关键字 不同 情况的 SQL 拼接。

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import top.muquanyu.Mapper.BlogMapper;
import top.muquanyu.pojo.Blog;
import top.muquanyu.utils.IDutils;
import top.muquanyu.utils.MybatisUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

public class MyTest {
    @Test
    public void addInitBlog(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Blog blog = new Blog();
        blog.setId(IDutils.getId());
        blog.setTitle("aaaa");
        blog.setAuthor("mqy");
        blog.setCreateTime(new Date());
        blog.setViews(9999);

        mapper.addBlog(blog);
        blog.setId(IDutils.getId());
        blog.setTitle("bbbb");
        blog.setAuthor("mqy");
        mapper.addBlog(blog);
        blog.setId(IDutils.getId());
        blog.setTitle("cccc");
        blog.setAuthor("mqy");
        mapper.addBlog(blog);

        sqlSession.commit();// 提交事务

        sqlSession.close();
    }

    @Test
    public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
        HashMap map = new HashMap<>();
        map.put("title","aaaa");
        List blogs = mapper.queryBlogIF(map);
        for (Blog blog : blogs) {
            System.out.println(blog);
        }
        sqlSession.close();

    }
}



    
        insert into test.blog(id,title,author,create_time,views)
        values(#{id},#{title},#{author},#{createTime},#{views});
    

    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号