命令行连接MySQL数据库
mysql --default-character-set=[编码] -h [IP] -P[端口(没有空格)] -u [用户名] -D [数据库名] -p[密码(没有空格)]
例如
mysql --default-character-set=utf8 -h 127.0.0.1 -P3306 -u root -D test -proot
使用SQL将数据库中的表结构转成Java中的实体类,附带生成注释,属性首字母小写。
SELECT
CONCAT(
'/**',column_comment,'*/','private ',
CASE
data_type
WHEN 'varchar'
THEN 'String'
WHEN 'int'
THEN 'Integer'
WHEN 'decimal'
THEN 'BigDecimal'
WHEN 'datetime'
THEN 'Date'
WHEN 'longtext'
THEN 'String'
END,
' ',
LOWER(LEFT(column_name,1)) ,RIGHT(column_name,LENGTH(column_name)-1),
'; '
) ''
FROM
information_schema.`COLUMNS`
WHERE TABLE_NAME = 'tb_regioncoord'
ORDER BY ordinal_position ;
查询结果类似下边这样:
/**备注*/private Integer field1;
/**备注*/private Integer field2;
/**备注*/private String field3;
/**备注*/private String field4;
在IDE中将结果格式化再生成相应的get、set方法就可以了。
将数据库表结构转为mybatis中的resultMap
SELECT CONCAT('<result column="',LOWER(LEFT(column_name,1)) ,RIGHT(column_name,LENGTH(column_name)-1),'" jdbcType="',
CASE data_type WHEN 'int' THEN 'INTEGER' WHEN 'decimal' THEN 'DECIMAL' WHEN 'varchar' THEN 'VARCHAR' WHEN 'longtext' THEN 'VARCHAR' WHEN 'datetime' THEN 'TIMESTAMP' ELSE data_type END,'" property="',
LOWER(LEFT(column_name,1)) ,RIGHT(column_name,LENGTH(column_name)-1),'" javaType="',CASE
data_type
WHEN 'varchar'
THEN 'String'
WHEN 'int'
THEN 'Integer'
WHEN 'decimal'
THEN 'BigDecimal'
WHEN 'datetime'
THEN 'java.util.Date'
WHEN 'longtext'
THEN 'String'
END,'" />') '' FROM information_schema.`COLUMNS`
WHERE TABLE_NAME = 'tb_ad'
ORDER BY ordinal_position ;
生成的结果如下:
<result column="field1" jdbcType="INTEGER" property="field1" javaType="Integer" />
<result column="field2" jdbcType="INTEGER" property="field2" javaType="Integer" />
<result column="field3" jdbcType="VARCHAR" property="field3" javaType="String" />
<result column="field4" jdbcType="VARCHAR" property="field4" javaType="String" />
以上两个SQL可以省去一些重复的工作量,也能减少一些不必要的错误。
最后要说明的就是以上这两个方法只是初级方法,mybatis的dao、mapper、xml文件都是可以自动生成的,具体实现可以自行搜索 Mybatis-Generator