• 动态SQL---P22,P23,P24


    (其实这块很简单,就是sql。你sql学的好这部分很好学的)

    1.搭建环境

    创建一个基础工程

    1. 导包
    2. 编写配置文件
    3. 编写实体类
    4. 编写实体类对应Mapper接口和Mapper.XML文件

     

     框起来的三个直接复制上一个项目的内容。

    箭头是自己创建的内容
     


    pom.xml导入lombox。

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.projectlombokgroupId>
    4. <artifactId>lombokartifactId>
    5. <version>1.18.10version>
    6. dependency>
    7. <dependency>
    8. <groupId>junitgroupId>
    9. <artifactId>junitartifactId>
    10. <version>4.12version>
    11. dependency>
    12. dependencies>

    mybatis-config.xml:这里修改成下图的样子


     

     BlogMapper:

    1. package com.Li.dao;
    2. import com.Li.pojo.Blog;
    3. public interface BlogMapper {
    4. //插入数据
    5. int addBlog(Blog blog);
    6. }

    BlogMapper.xml:

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.Li.dao.BlogMapper">
    6. <insert id="addBlog" parameterType="blog">
    7. insert into blog (id, title, author, create_time, views)
    8. values (#{id},#{title},#{author},#{createTime},#{views});
    9. insert>
    10. mapper>

    pojo里面的实体类Blog(依据数据库的表的字段的数据类型进行编写)

    1. package com.Li.pojo;
    2. import lombok.Data;
    3. import java.util.Date;
    4. @Data
    5. public class Blog {
    6. private String id;
    7. private String title;
    8. private String author;
    9. private Date createTime;
    10. private int views;
    11. }

    IDutils:(工具类:获取一个随机的数字串)

    1. package com.Li.utils;
    2. import org.junit.Test;
    3. import java.util.UUID;
    4. public class IDutils {
    5. public static String getID(){
    6. return UUID.randomUUID().toString().replaceAll("-", "");
    7. }
    8. @Test
    9. public void test(){
    10. System.out.println(IDutils.getID());
    11. System.out.println(IDutils.getID());
    12. System.out.println(IDutils.getID());
    13. }
    14. }

    测试一下 ,可以成功生成随机数。

     测试类:

    1. import com.Li.dao.BlogMapper;
    2. import com.Li.pojo.Blog;
    3. import com.Li.utils.IDutils;
    4. import com.Li.utils.MybatisUtils;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.junit.Test;
    7. import java.util.Date;
    8. public class MyTest {
    9. @Test
    10. public void addInitBlog(){
    11. SqlSession sqlSession = MybatisUtils.getSqlSession();
    12. BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
    13. Blog blog = new Blog();
    14. blog.setId(IDutils.getID());
    15. blog.setTitle("Mybatis如此简单");
    16. blog.setAuthor("狂神说");
    17. blog.setCreateTime(new Date());
    18. blog.setViews(9999);
    19. mapper.addBlog(blog);
    20. blog.setId(IDutils.getID());
    21. blog.setTitle("Java如此简单");
    22. mapper.addBlog(blog);
    23. blog.setId(IDutils.getID());
    24. blog.setTitle("Spring如此简单");
    25. mapper.addBlog(blog);
    26. blog.setId(IDutils.getID());
    27. blog.setTitle("微服务如此简单");
    28. mapper.addBlog(blog);
    29. sqlSession.close();
    30. }
    31. }

    测试结果:

     

    IF语句:

    动态拼接:增加条件来实现。

    接口:

    1. //查询博客
    2. List queryBlogIF(Map map);

    接口对应xml

    1. <select id="queryBlogIF" resultType="blog" parameterType="map">
    2. select * from mybatis.blog where 1 = 1
    3. <if test="title != null">
    4. and title = #{title}
    5. if>
    6. <if test="author != null">
    7. and author = #{author}
    8. if>
    9. select>

    测试类:

    1. @Test
    2. public void queryBlogIF(){
    3. SqlSession sqlSession = MybatisUtils.getSqlSession();
    4. BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
    5. HashMap hashMap = new HashMap();
    6. hashMap.put("title", "Java如此简单");
    7. List blogs = mapper.queryBlogIF(hashMap);
    8. for (Blog blog : blogs) {
    9. System.out.println(blog);
    10. }
    11. sqlSession.close();
    12. }

    结果:

     再测试一次:

    里面出现了追加的sql了,成功!比较简单。


     where

     将上一个queryBlogIF的select注释,之后换成下面的进行测试。测试成功。(注意where的使用)