(三)(四)spring boot 整合 mybatis + mybatis-generator
pom.xml 加入依赖和插件
<!--spring boot mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
<!-- mybatis-generator -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
再加入mybatis-generator的两个配置文件
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<properties resource="generatorConfig.properties" />
<!--oracle 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location = "${drive.class.path}" />
<context id="mybatis" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
<!-- 是否生成注释代时间戳-->
<property name="suppressDate" value="false" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成实体类地址 -->
<javaModelGenerator targetPackage="${entity.targetProject}"
targetProject="${entity.targetPackage}">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 是否针对string类型的字段在set的时候进行trim调用 -->
<property name="trimStrings" value="false" />
<!-- EclipseWork父类路径 -->
<!--<property name="rootClass" value="${entity.abstract}" />-->
</javaModelGenerator>
<!-- targetProject:mapper.xml映射文件生成的位置-->
<sqlMapGenerator targetPackage="${mapper.targetPackage}"
targetProject="${mapper.targetProject}">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="${mapper.interface.targetPackage}"
targetProject="${mapper.interface.targetProject}">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="${table.name}" domainObjectName="${entity.name}" enableDeleteByExample="false"
enableSelectByExample="false" enableCountByExample="false" enableUpdateByExample="false"
enableUpdateByPrimaryKey="false">
<!--<generatedKey column="sid" sqlStatement="${table.primaryKey}"/>-->
<!-- 需要忽略的列true 大小写完全匹配,false 忽略大小写匹配 -->
<!--<ignoreColumn column="PLAN_ID" delimitedColumnName="true" />-->
</table>
</context>
</generatorConfiguration>
generatorConfig.properties
#数据库驱动jar
drive.class.path = D:/mavenWork/zhongyi/com/microsoft/sqlserver/mssql-jdbc/6.2.2.jre8/mssql-jdbc-6.2.2.jre8.jar
# 数据库连接参数
#jdbc.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.url = jdbc:sqlserver://LANG/SQLEXPRESS:1433;DatabaseName=lang
#jdbc.username = LangXuHao
#jdbc.password= 123456
jdbc.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url = jdbc:sqlserver://10.10.1.38:1433;DatabaseName=gconline
jdbc.username = isystem
jdbc.password= isystem
# 实体类路径
#entity.abstract = com.sgai.sadp.core.base.entity.AbstractEntity
entity.targetProject = com.lang.demo
entity.targetPackage = src/main/java
# mapper.xml路径
mapper.targetProject = src/main/resources
mapper.targetPackage = mapper
# mapper interface
mapper.interface.targetProject = src/main/java
mapper.interface.targetPackage = com.lang.demo.mapper
# 生成的表名和对应的实体类名
table.name = wechat_test_prizes
#table.primaryKey = select s_customer_history_version.nextval from dual
entity.name = wechatTestPrizes
下面用maven配置启动插件生成实体类,接口,和mapper.xml
启动插件
控制台打印如下说明生成成功:
[INFO] Generating Record class for table wechat_test_prizes
[INFO] Generating Mapper Interface for table wechat_test_prizes
[INFO] Generating SQL Map for table wechat_test_prizes
[INFO] Saving file wechatTestPrizesMapper.xml
[INFO] Saving file wechatTestPrizes.java
[INFO] Saving file wechatTestPrizesMapper.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.472 s
[INFO] Finished at: 2018-07-16T16:14:18+08:00
[INFO] Final Memory: 17M/199M
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
生成后项目目录:
最后在application.yml 加入配置
mybatis:
#实体类地址
type-aliases-package: com.lang.springbootdemo.entity
mapper-locations: classpath:mapper/*.xml
在启动类加上 @MapperScan 这样才能扫描到接口
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
@MapperScan(value = "com.lang.springbootdemo.mapper")//扫面接口
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
别忘记了 在生成的接口上加上@Repository
import com.lang.springbootdemo.entity.WechatTestPrizes;
import org.springframework.stereotype.Repository;
@Repository
public interface WechatTestPrizesMapper {
int deleteByPrimaryKey(Integer id);
int insert(WechatTestPrizes record);
int insertSelective(WechatTestPrizes record);
WechatTestPrizes selectByPrimaryKey(Integer id);
}
最后在之前的HelloController 测试下 我们添加一天数据
import com.lang.springbootdemo.entity.WechatTestPrizes;
import com.lang.springbootdemo.mapper.WechatTestPrizesMapper;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: Xuhao
* @Description:
* @Date: Created in 11:20 2018/7/16
*/
@RestController
public class HelloController {
@Resource
private WechatTestPrizesMapper wechatTestPrizesMapper;
@RequestMapping(value = "/hello")
public String hello(){
WechatTestPrizes wechatTestPrizes = new WechatTestPrizes();
wechatTestPrizes.setAwardId(-1);
wechatTestPrizes.setActivityCode("-1");
wechatTestPrizes.setCdKey("hello");
wechatTestPrizes.setIsconvert("a");
int insert = wechatTestPrizesMapper.insert(wechatTestPrizes);
System.out.println(insert);
return "hello_spring_boot";
}
}
学而不思则罔 思而不学则殆