目录
优势
问题:使用MyBatis 查询数据库查出有数据 但返回对象为null
自动生成代码
动态数据源时可能用到的resultset读取方法
参考
MyBatis-Plus为简化开发而生https://mp.baomidou.com/
优势
主要是不想使用mybatis里的xml文件,觉得这样的形式更好。可以使用baseMapper的一些方法。
也可以直接 使用注释的方式来扩展sql进行使用。
比较丰富的mp函数。 可以看下参考
问题:使用MyBatis 查询数据库查出有数据 但返回对象为null
百度上有很多答案,通过各种注释进行保障,驼峰命名等,归要结底,实际上就是mybatis-plus的规则不识别你制作的entity,不管你多小心,总会出点小问题吧。看它自己生成的,将它会误解的,都标识上了合适的注释;对于类型,比如timestamp,我们可能用date 等,它用的是如下图2.
自动生成代码
package com.gbcom.dbmiddle.taos.util;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class MysqlGenerator {
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
//1、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java"); //生成路径(一般都是生成在此项目的src/main/java下面)
gc.setAuthor("duanxiongwen"); //设置作者
gc.setOpen(false);
gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
gc.setbaseResultMap(true); //生成resultMap
mpg.setGlobalConfig(gc);
//2、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://10.60.2.186:8166/mesh?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 3、包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("sys2");
pc.setParent("com.gbcom.dbmiddle.taos");
mpg.setPackageInfo(pc);
// 4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// strategy.setSuperControllerClass("com.lcy.demo.sys.controller.baseController");
// strategy.setSuperEntityClass("com.lcy.demo.sys.entity.baseEntity");
// strategy.setTablePrefix("t_"); // 表名前缀
strategy.setEntityLombokModel(true); //使用lombok
strategy.setInclude("mesh_info_topo"); // 逆向工程使用的表 如果要生成多个,这里可以传入String[]
mpg.setStrategy(strategy);
//5、执行
mpg.execute();
}
}
动态数据源时可能用到的resultset读取方法
上述自动生成的带DATA注释的entity,会影响Beanlisthanlder的使用,这样entity自己再生成个带set,get的实体即可。



