Mybatis之DDL语句
一、MySQL引言:
近年来,开源数据库逐渐流行起来。由于具有免费使用、配置简单、稳定性好、性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中最具有代表性的一个。MySQL 数据库目前分为社区版(Community Server)和企业版(Enterprise),其最重要的区别在于:社区版是自由下载而且完全免费的,但是官方不提供任何技术支持,适用于大多数普通用户;而企业版则是收费的,不能在线下载,相应地,它提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户,常用于企业。
SQL 类别:
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 与 select 等。
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
二、MyBatis引言:
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
相信大家在开发中基本都是使用的MyBatis进行操作数据库的吧,但你是不是只会操作简单的DML(即增删改查)语句呐,有没有想过MyBatis还可以帮我们创建表、修改表、创建触发器等其他操作呐。下面我就带大家一起欣赏几个简单的demo吧,但别小看只是几个简单的小例子,它可以带你看见你之前没看到、甚至没想到的东西哦。
三、一起来看看吧:
简单编写如下程序:
Controller层:
package com.boot.crm.controller;
import com.boot.crm.UserService.IUserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @ClassName DemoController
* @Description DemoController
* @Author Kang
* @Company 康康小课堂
* @Date 2019/11/29 6:11
* @Version 1.0
*/
@Controller
@RequestMapping("/")
public class DemoController {
private IUserService userService;
/**
* 使用MyBatis创建MySQL触发器
*/
@RequestMapping("/createTigger")
public void createTigger(){
userService.createTigger();
}
/**
* 使用注解进行表的创建
*/
@RequestMapping("/createTable")
public void createTable(){
userService.createTable();
}
}
Service层:
package com.boot.crm.UserService.impl;
import com.boot.crm.UserService.IUserService;
import com.boot.crm.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService implements IUserService {
private UserMapper userMapper;
@Autowired
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
/**
* 使用MyBatis创建MySQL触发器
*/
@Override
public void createTigger() {
userMapper.createTigger("userTigger");
}
/**
* 使用注解进行表的创建
*/
@Override
public void createTable() {
userMapper.createTable();
}
}
Mapper:
/**
* 使用MyBatis创建MySQL触发器
* @param value 触发器名称
*/
void createTigger(String value);
/**
* 使用注解进行创建表
*/
@Update("create table t_user2 as select * from t_user")
void createTable();
XML :
<update id="createTigger" parameterType="string">
create trigger ${value} after insert on t_user for each row
begin
insert into
t_user(`username`, `password`,`age`,`createDate`)
VALUES
('kang', 'root', 22, '2019-11-30 06:10:32');
end;
</update>
五、看图识结果
对此,代码就没了,是不是也很简单呐,然后再一起看几张结果图吧
原始表数据及触发器:
添加触发器:
创建t_user2表:
有图真相你还在犹豫什么,还不快动手试一试!!!