Mybatis 動(dòng)態(tài)SQL搭建環(huán)境的全過(guò)程
1. Mybatis–動(dòng)態(tài)SQL
動(dòng)態(tài) SQL 是 MyBatis 的強(qiáng)大特性之一。如果你使用過(guò) JDBC 或其它類(lèi)似的框架,你應(yīng)該能理解根據(jù)不同條件拼接 SQL 語(yǔ)句有多痛苦,例如拼接時(shí)要確保不能忘記添加必要的空格,還要注意去掉列表最后一個(gè)列名的逗號(hào)。利用動(dòng)態(tài) SQL,可以徹底擺脫這種痛苦。
在 MyBatis 之前的版本中,需要花時(shí)間了解大量的元素。
借助功能強(qiáng)大的基于 OGNL 的表達(dá)式,MyBatis 3 替換了之前的大部分元素,
大大精簡(jiǎn)了元素種類(lèi),現(xiàn)在要學(xué)習(xí)的元素種類(lèi)比原來(lái)的一半還要少。if
choose (when, otherwise)
trim (where, set)
foreach
1.1 什么是動(dòng)態(tài)SQL?
動(dòng)態(tài)SQL就是 指根據(jù)不同的條件生成不同的SQL語(yǔ)句
1.2 搭建環(huán)境
1.2.1 創(chuàng)建表
執(zhí)行此sql語(yǔ)句
CREATE TABLE `blog`( `id` VARCHAR(50) NOT NULL COMMENT '博客id', `title` VARCHAR(100) NOT NULL COMMENT '博客標(biāo)題', `author` VARCHAR(30) NOT NULL COMMENT '博客作者', `create_time` DATETIME NOT NULL COMMENT '創(chuàng)建時(shí)間', `views` INT(30) NOT NULL COMMENT '瀏覽量' )ENGINE=INNODB DEFAULT CHARSET=utf8
執(zhí)行結(jié)果:

1.2.2 創(chuàng)建一個(gè)基礎(chǔ)工程

1.2.2.1 導(dǎo)包
pom.xml
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
1.2.2.2 編寫(xiě)配置文件
mybatis-config.xml
<!-- 引入外部配置文件-->
<properties resource="db.properties"/>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 是否開(kāi)啟駝峰命名自動(dòng)映射,即從經(jīng)典數(shù)據(jù)庫(kù)列名 A_COLUMN 映射到經(jīng)典 Java 屬性名 aColumn。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<typeAlias type="com.tian.pojo.Blog" alias="Blog"/>
</typeAliases>
1.2.2.3 編寫(xiě)實(shí)體類(lèi)
Blog.java
package com.tian.pojo;
import lombok.Data;
import java.util.Date;
@Data
public class Blog {
private String id;
private String title;
private String author;
private Date createTime; //屬性名和字段名不一致 數(shù)據(jù)庫(kù)是 create_time
private int views;
}
1.2.2.4 編寫(xiě)實(shí)體類(lèi)對(duì)應(yīng)Mapper接口和Mapper.XML文件
BlogMapper.java
package com.tian.dao;
import com.tian.pojo.Blog;
public interface BlogMapper {
// 插入數(shù)據(jù)
int addBlog(Blog blog);
}
BlogMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tian.dao.BlogMapper">
<insert id="addBlog" parameterType="Blog">
insert into mybatis.blog(id, title, author, create_time, views)
values (#{id}, #{title}, #{author}, #{createTime}, #{views});
</insert>
</mapper>
1.2.2.5 編寫(xiě)IDUtils .java用于生成隨機(jī)的ID
IDUtils .java
package com.tian.util;
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());
System.out.println(getId());
System.out.println(getId());
System.out.println(getId());
System.out.println(getId());
System.out.println(getId());
}
}
運(yùn)行結(jié)果:

1.2.2.6 向表中插入數(shù)據(jù)
Test.java
import com.tian.dao.BlogMapper;
import com.tian.pojo.Blog;
import com.tian.util.IDUtils;
import com.tian.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import java.util.Date;
public class Test {
@org.junit.Test
public void test() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
Blog blog = new Blog();
blog.setId(IDUtils.getId());
blog.setTitle("Mybatis");
blog.setAuthor("天天天");
blog.setCreateTime(new Date());
blog.setViews(9999);
mapper.addBlog(blog);
blog.setId(IDUtils.getId());
blog.setTitle("Java");
mapper.addBlog(blog);
blog.setId(IDUtils.getId());
blog.setTitle("Spring");
mapper.addBlog(blog);
blog.setId(IDUtils.getId());
blog.setTitle("微服務(wù)");
mapper.addBlog(blog);
sqlSession.close();
}
}
運(yùn)行結(jié)果:


現(xiàn)在我們吧表中的數(shù)據(jù)稍微更改下

總結(jié)
到此這篇關(guān)于Mybatis 動(dòng)態(tài)SQL搭建環(huán)境的文章就介紹到這了,更多相關(guān)Mybatis動(dòng)態(tài)SQL環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis 動(dòng)態(tài)拼接Sql字符串的問(wèn)題
- mybatis的動(dòng)態(tài)sql詳解(精)
- MyBatis 執(zhí)行動(dòng)態(tài) SQL語(yǔ)句詳解
- Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解
- oracle+mybatis 使用動(dòng)態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert
- mybatis動(dòng)態(tài)sql之Map參數(shù)的講解
- MyBatis動(dòng)態(tài)Sql之if標(biāo)簽的用法詳解
- MyBatis執(zhí)行動(dòng)態(tài)SQL的方法
- Mybatis中動(dòng)態(tài)SQL,if,where,foreach的使用教程詳解
- Mybatis模糊查詢(xún)和動(dòng)態(tài)sql語(yǔ)句的用法
相關(guān)文章
SpringMVC多個(gè)模塊404報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了SpringMVC多個(gè)模塊404報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
簡(jiǎn)單了解synchronized和lock的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解synchronized和lock的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶(hù)端
本文主要介紹了java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶(hù)端,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法
這篇文章主要介紹了詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法,講解了System.getEnv()和System.getProperties()這兩個(gè)核心方法的使用,需要的朋友可以參考下2016-05-05
java中使用interrupt通知線(xiàn)程停止詳析
這篇文章主要介紹了java中使用interrupt通知線(xiàn)程停止詳析,文章介紹的是使用interrupt來(lái)通知線(xiàn)程停止運(yùn)行,而不是強(qiáng)制停止,詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-09-09
MyBatis實(shí)現(xiàn)插入大量數(shù)據(jù)方法詳解
最近在公司項(xiàng)目開(kāi)發(fā)中遇到批量數(shù)據(jù)插入或者更新,下面這篇文章主要給大家介紹了關(guān)于MyBatis實(shí)現(xiàn)批量插入的相關(guān)資料,需要的朋友可以參考下2022-11-11
Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Spring中獲取Bean方法上的自定義注解問(wèn)題解析
這篇文章主要介紹了Spring中如何獲取Bean方法上的自定義注解,基本的思路就是通過(guò)Spring提供的ApplicationContext#getBeansWithAnnotation+反射來(lái)實(shí)現(xiàn),需要的朋友可以參考下2023-06-06
顯示IntelliJ IDEA工具的Run Dashboard功能圖文詳解
這篇文章主要介紹了顯示IntelliJ IDEA工具的Run Dashboard功能,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

