Spring boot对于我来说是一个刚接触的新东西,学习过程中,发现这东西还是很容易上手的,Spring boot没配置时会默认使用Spring data jpa,这东西可以说一个极简洁的工具,可是我还是比较喜欢用mybatis,工具是没有最好的,只有这合适自己的。
说到mybatis,最近有一个很好用的工具--------mybatis-Plus(官网),就相当于是对mybatis镀了一层金。现在更新的版本是3.0.5。我比较喜欢的功能是代码生成器,条件构造器,这样就可以更容易的去开发了。
mybatisPlus官网上是有Spring boot整个的例子的,但是官方文档只能用来学习,自己拿来用的时候你会发现总会各式各样的问题,程序跑不起来。所以我拿自己开发用的demo,希望你们用的上
|
下面就是开发过程
1、首先要把需要的jar文件都弄过来,pom.xml需要的东西如下
|
<name>spring-boot-mybatis-plus</name> <description>Demo project for Spring Boot</description>
<!-- 定义公共资源版本 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties>
<dependencies> <!-- 上边引入 parent,因此 下边无需指定版本 --> <!-- 包含 mvc,aop 等jar资源 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
<!--spring操作数据库jpa 用于将数据存入数据库的类和方法的集--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
<!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope> </dependency>
<!--spring模板引擎--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.3</version> </dependency>
<!-- mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
<!-- mybatisplus与springboot整合 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatisplus-spring-boot-starter</artifactId> <version>1.0.5</version> </dependency> <!-- MP 核心库 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.1.8</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency>
<!-- springboot整合mybatis(核心就这一个) --> <!-- 注意顺序,这个一定要放在最下面 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency>
</dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 没有该配置,devtools 不生效 --> <fork>true</fork> </configuration> </plugin> </plugins> </build>
|
2、添加mybatis相关的配置,如账号、密码等。这里我使用了application.yml来配。
application.yml
|
server: port: 8080 servlet: context-path: /test spring: datasource: url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8 username: root password: root driver-class-name: com.mysql.jdbc.Driver mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml type-aliases-package: cn.public.entity
|
配置的东西和我们以前用mybatis配置可以说差不多,注意的是把数据库和包名改为自己项目对应,基本没问题了。
3、mybatis-Plus——代码生成器,第三步就是创建一个代码生成器。
|
import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.config.rules.DbType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/** * Created by Administrator on 2018/12/24. * 代码生成器 */ public class MpGenerator {
/** * * @Title: main * @Description: 生成 * @param args */ public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator();
// 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir("H:\\IdeaIUproject\\mybatis_puls\\src\\main\\java"); gc.setFileOverride(true); gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false gc.setEnableCache(false);// XML 二级缓存 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(false);// XML columList gc.setAuthor("mao");// 作者
// 自定义文件命名,注意 %s 会自动填充表实体属性! /*gc.setControllerName("%sAction"); gc.setServiceName("%sService"); gc.setServiceImplName("%sServiceImpl"); gc.setMapperName("%sMapper"); gc.setXmlName("%sMapper")*/; mpg.setGlobalConfig(gc);
// 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL);
dsc.setTypeConvert(new MySqlTypeConvert() { // 自定义数据库表字段类型转换【可选】 @Override public DbColumnType processTypeConvert(String fieldType) { System.out.println("转换类型:" + fieldType); // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。 return super.processTypeConvert(fieldType); } });
dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("root"); dsc.setUrl("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8"); mpg.setDataSource(dsc);
// 策略配置 StrategyConfig strategy = new StrategyConfig(); //strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀 strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略 strategy.setInclude(new String[] { "user" }); // 需要生成的表
/*strategy.setSuperServiceClass(null); strategy.setSuperServiceImplClass(null); strategy.setSuperMapperClass(null);*/
mpg.setStrategy(strategy);
// 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("cn.public"); pc.setController("controller"); pc.setService("service"); pc.setServiceImpl("serviceImpl"); pc.setMapper("dao"); pc.setEntity("entity"); pc.setXml("xml"); mpg.setPackageInfo(pc);
// 执行生成 mpg.execute();
} }
|
4、代码生成完毕后,你需要在你的启动类上添加一个扫描mapper.xml的注解 或者直接在你的mapper类上面添加一个@mapper注解 |
import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
/** * Created by Administrator on 2018/12/24. */ @SpringBootApplication @MapperScan("cn.public.dao") public class SpringBootMybatisPlusApplication { public static void main(String[] args){ SpringApplication.run(SpringBootMybatisPlusApplication.class,args); } }
|
/** * @author kuancz * @since 2018-12-25 */ @Mapper public interface UserMapper extends BaseMapper<User> {
}
|
最后你只需要启动项目做一个测试即可
@RestController @RequestMapping("user") public class UserController {
@Resource private UserService userService;
@GetMapping public List<User> list(){ List<User> userList = userService.selectList(new EntityWrapper<User>()); System.err.println(userList); return userList; } }
|
最后为了项目方便也可以在pom文件添加一个插件 可以直接针对数据库表生成代码 <build> <finalName>mybatis_puls</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>cn.pubinfo</groupId> <artifactId>mp-generator</artifactId> <version>1.01-SNAPSHOT</version> <configuration> <tables> <table>info</table><!--数据库表名--> </tables> <!--项目分支名称 注:无分支可不用添--> <!--<profile>dev</profile>--> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <skip>true</skip> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> </build>
|