一、前言
由于之前一直在使用Navicat
,不得不说这是个很优秀的数据库管理软件,很方便。
很可惜的是,到期了,学生穷呀,不能去支持一下,也懒的找其他版本的。
无意间发现了**本篇文章要说的这个神器,贼好用,已经用了几天了,表示真的很无敌
**
二、重量级嘉宾闪亮登场
(一)神秘嘉宾的自我表白
开发Java应用程序,作为明星工具IntelliJ IDEA Ultimate
当然是首选,然后进行数据库SQL开发的时候,常常会选择诸如:Navicat
, sqlyog
, MySQL Workbench
等。
当进行Java数据库编程的时候,会来在两个工具,效率极低,其实这都没有必要的。 IDEA本身就是神器
,完全可以在一个工具中同时完成Java编号和SQL开发。本文主要介绍IDEA下,数据库工具(DataBase Tool)
的基本使用。
(二)神秘嘉宾的家在哪?
在你刚打开idea的时候就会发现旁边有一个,如下图所示的地方:
解开真面目的时刻:
可以看到可以支持很多种数据库,可以完全满足我的需求,我的
,我的,如果是不支持的也没办法了,哈哈其实根据我摸索的,是支持自定义驱动的,小博主不才,才疏学浅,这里面的数据库,我认识的都在里面,不认识的也有
。
三、婚嫁说明书(基础配置)
为何说是婚嫁说明书
,因为我认为我写的详细。
(一)安装相关数据库驱动
左侧找到自己需要的数据库,如果找不到,就点击加号,添加一个新的。
可以根据一下步骤去找到一个自己合适的驱动
可以看到还支持其他版本的,例如我就同时下载了8.x版本的MySql驱动
(二)添加数据库的连接信息
选择一个自己添加好的
这些填写的数据库的账号密码和地址的信息我就不用多解释了吧,相信你既然点开的此文章,肯定是可以看懂的。
在这里,你可以切换不同的驱动,你可以切换不动的驱动的版本
注意雷区:这里我估计卖了一个坑,没填写数据库的名字,一会揭晓
例如切换驱动:
测试是否连接成功
故意输入一个不存在的账号:
结果:
重新修改一下配置信息:
如果不知道数据库名的话,可以查看一下:
重新添加数据库
再看,就可以看到表名字了
(三)查看表中的数据
如果你点击的是表名,则直接显示表的内容:
如果你点击的是某个字段,则会自动定位到该表中的这个字段上:
对于字段太多的表来说,真的是美滋滋呀,
太好了,干得漂亮,我可喜欢这个了
(四)命令行中操作mysql
这个地方也很美,真的
可以自动保存你写的sql,一点也不用你担心会丢失
哈哈,真好,我也是偶尔发现的
也可以new一个新的
(五)如何在这里可视化创建一个新表
注意这里说的是可视化的操作,完全可以自己命令行哦
可自定义表名,还自动同步可视化操作的sql代码,美滋滋啊
这也太方便了吧,具体什么意思,相信你都明白,这里就说这些,自己摸索吧,很神奇
(六)如何删除一个表
直接看图
(七)如何删除一个字段
直接看图,简单明了
(八)如何修改表的结构等
1、右击表,然后:
是不是很少爽
四、与mybatis.generator一起使用更快哉
这个也是我意外发现的,因为我在做项目的时候,使用了mybatis.generator
,这个就是可以自动生成,实体类、dao层、service层、controller层、xml文件
。
(一)pom配置
pom中的配置文件如下:
这是我自动生成的时候配置的,关于自动生成的具体的配置我就不说了,网上也有很多。如果有需要的话,可以在这个文章下留言,我也可以补上一篇文章。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>mybatis generator</id>
<phase>package</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 允许移动生成文件-->
<verbose>true</verbose>
<!-- 允许自动覆盖文件-->
<overwrite>false</overwrite>
<configurationFile>
src/main/resources/generatorConfig.xml
</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
(二)生层后目录结构
自动生层之后就会下面这样:
(三)插件配置
当然了的靓仔还是今天的主角
右击选择mybatis-generator
补充自己需求的信息:
(四)最终结果
神奇的发生了:
1、生成的实体类
package cn.agriculture;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* shipping_address
* @author
*/
@Data
public class ShippingAddress extends ShippingAddressKey implements Serializable {
private String userName;
private String mobilePhone;
private Integer province;
private Integer city;
private Integer county;
private String street;
private String completeAddress;
private String remarks;
private Date createDate;
private static final long serialVersionUID = 1L;
}
2、生成的dao层
package cn.agriculture;
import cn.agriculture.ShippingAddress;
import cn.agriculture.ShippingAddressKey;
public interface ShippingAddressDao {
int deleteByPrimaryKey(ShippingAddressKey key);
int insert(ShippingAddress record);
int insertSelective(ShippingAddress record);
ShippingAddress selectByPrimaryKey(ShippingAddressKey key);
int updateByPrimaryKeySelective(ShippingAddress record);
int updateByPrimaryKey(ShippingAddress record);
}
3、生成的主键、外键类
package cn.agriculture;
import java.io.Serializable;
import lombok.Data;
/**
* shipping_address
* @author
*/
@Data
public class ShippingAddressKey implements Serializable {
private Integer shippingAddressId;
private Integer userId;
private static final long serialVersionUID = 1L;
}
4、生成的mapper文件
<?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="cn.agriculture.ShippingAddressDao">
<resultMap id="BaseResultMap" type="cn.agriculture.ShippingAddress">
<id column="SHIPPING_ADDRESS_ID" jdbcType="INTEGER" property="shippingAddressId" />
<id column="USER_ID" jdbcType="INTEGER" property="userId" />
<result column="USER_NAME" jdbcType="VARCHAR" property="userName" />
<result column="MOBILE_PHONE" jdbcType="VARCHAR" property="mobilePhone" />
<result column="PROVINCE" jdbcType="INTEGER" property="province" />
<result column="CITY" jdbcType="INTEGER" property="city" />
<result column="COUNTY" jdbcType="INTEGER" property="county" />
<result column="STREET" jdbcType="VARCHAR" property="street" />
<result column="COMPLETE_ADDRESS" jdbcType="VARCHAR" property="completeAddress" />
<result column="REMARKS" jdbcType="VARCHAR" property="remarks" />
<result column="CREATE_DATE" jdbcType="TIMESTAMP" property="createDate" />
</resultMap>
<sql id="Base_Column_List">
SHIPPING_ADDRESS_ID, USER_ID, USER_NAME, MOBILE_PHONE, PROVINCE, CITY, COUNTY, STREET,
COMPLETE_ADDRESS, REMARKS, CREATE_DATE
</sql>
<select id="selectByPrimaryKey" parameterType="cn.agriculture.ShippingAddressKey" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from shipping_address
where SHIPPING_ADDRESS_ID = #{shippingAddressId,jdbcType=INTEGER}
and USER_ID = #{userId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="cn.agriculture.ShippingAddressKey">
delete from shipping_address
where SHIPPING_ADDRESS_ID = #{shippingAddressId,jdbcType=INTEGER}
and USER_ID = #{userId,jdbcType=INTEGER}
</delete>
<insert id="insert" keyColumn="SHIPPING_ADDRESS_ID" keyProperty="shippingAddressId" parameterType="cn.agriculture.ShippingAddress" useGeneratedKeys="true">
insert into shipping_address (USER_ID, USER_NAME, MOBILE_PHONE,
PROVINCE, CITY, COUNTY,
STREET, COMPLETE_ADDRESS, REMARKS,
CREATE_DATE)
values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{mobilePhone,jdbcType=VARCHAR},
#{province,jdbcType=INTEGER}, #{city,jdbcType=INTEGER}, #{county,jdbcType=INTEGER},
#{street,jdbcType=VARCHAR}, #{completeAddress,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR},
#{createDate,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" keyColumn="SHIPPING_ADDRESS_ID" keyProperty="shippingAddressId" parameterType="cn.agriculture.ShippingAddress" useGeneratedKeys="true">
insert into shipping_address
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">
USER_ID,
</if>
<if test="userName != null">
USER_NAME,
</if>
<if test="mobilePhone != null">
MOBILE_PHONE,
</if>
<if test="province != null">
PROVINCE,
</if>
<if test="city != null">
CITY,
</if>
<if test="county != null">
COUNTY,
</if>
<if test="street != null">
STREET,
</if>
<if test="completeAddress != null">
COMPLETE_ADDRESS,
</if>
<if test="remarks != null">
REMARKS,
</if>
<if test="createDate != null">
CREATE_DATE,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
<if test="userName != null">
#{userName,jdbcType=VARCHAR},
</if>
<if test="mobilePhone != null">
#{mobilePhone,jdbcType=VARCHAR},
</if>
<if test="province != null">
#{province,jdbcType=INTEGER},
</if>
<if test="city != null">
#{city,jdbcType=INTEGER},
</if>
<if test="county != null">
#{county,jdbcType=INTEGER},
</if>
<if test="street != null">
#{street,jdbcType=VARCHAR},
</if>
<if test="completeAddress != null">
#{completeAddress,jdbcType=VARCHAR},
</if>
<if test="remarks != null">
#{remarks,jdbcType=VARCHAR},
</if>
<if test="createDate != null">
#{createDate,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cn.agriculture.ShippingAddress">
update shipping_address
<set>
<if test="userName != null">
USER_NAME = #{userName,jdbcType=VARCHAR},
</if>
<if test="mobilePhone != null">
MOBILE_PHONE = #{mobilePhone,jdbcType=VARCHAR},
</if>
<if test="province != null">
PROVINCE = #{province,jdbcType=INTEGER},
</if>
<if test="city != null">
CITY = #{city,jdbcType=INTEGER},
</if>
<if test="county != null">
COUNTY = #{county,jdbcType=INTEGER},
</if>
<if test="street != null">
STREET = #{street,jdbcType=VARCHAR},
</if>
<if test="completeAddress != null">
COMPLETE_ADDRESS = #{completeAddress,jdbcType=VARCHAR},
</if>
<if test="remarks != null">
REMARKS = #{remarks,jdbcType=VARCHAR},
</if>
<if test="createDate != null">
CREATE_DATE = #{createDate,jdbcType=TIMESTAMP},
</if>
</set>
where SHIPPING_ADDRESS_ID = #{shippingAddressId,jdbcType=INTEGER}
and USER_ID = #{userId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="cn.agriculture.ShippingAddress">
update shipping_address
set USER_NAME = #{userName,jdbcType=VARCHAR},
MOBILE_PHONE = #{mobilePhone,jdbcType=VARCHAR},
PROVINCE = #{province,jdbcType=INTEGER},
CITY = #{city,jdbcType=INTEGER},
COUNTY = #{county,jdbcType=INTEGER},
STREET = #{street,jdbcType=VARCHAR},
COMPLETE_ADDRESS = #{completeAddress,jdbcType=VARCHAR},
REMARKS = #{remarks,jdbcType=VARCHAR},
CREATE_DATE = #{createDate,jdbcType=TIMESTAMP}
where SHIPPING_ADDRESS_ID = #{shippingAddressId,jdbcType=INTEGER}
and USER_ID = #{userId,jdbcType=INTEGER}
</update>
</mapper>
五、与IDEA结合使用
看到这个图就很爽,再也不用去切换到其他的数据库管理工具了。
一个界面就搞定了,美哉美哉,哈哈哈
提示也是很友好
开发速度能不快吗???
如果对你有帮助,可以分享给你身边的朋友。或者给俺点个大大的赞和大大的评论,点赞和评论就是给我最大的支持,感谢。
水平有限,难免会有疏漏或者书写不合理的地方,欢迎交流讨论。
作者:TrueDei
作者唯一博客CSDN:https://truedei.blog.csdn.net/
转载说明:如需转载请注明原地址和作者名。
如果喜欢我的文章,还没看够可以关注我,我会用心写好每一篇文章。
Java小白修炼手册
转载:https://blog.csdn.net/qq_17623363/article/details/106392752