SpringBoot学习记录二之mybatis
由于团队需要,今天将IDEA重新安装了下,和团队统一,为2021版本,此版本创建项目下载速度很慢,下载过程中不要乱动防止有些文件下载失败导致创建项目出现问题,如果出现问题可以到仓库里找到对应的组件看看是否没完全下载,顺便可熟悉。
开始创建项目,选用了SpringBoot框架,其他没选,今天要实现的目标就是实现mybatis通过xml配置数据库 自动生成model、interfice(接口),然后完成接口实现和api
一、在Resource下创建 文件夹mybatis-generarot,然后就在此文件夹下创建xml文件 generatorConfig.xml,可参照https://www.cnblogs.com/alexgl2008/articles/12809876.html,本次并没完全参照,因为这种形式我执行失败了,本人代码如下:
<?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>
<!-- 执行generator插件生成文件命令:call mvn mybatis-generator:generate -e-->
<!--引入配置文件-->
<!--<properties resource="mybatis-generator/mybatisGeneratorinit.properties"></properties>-->
<!-- classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选-->
<classPathEntry location="D:\apache-maven-3.8.2\repository\com\microsoft\sqlserver\mssql-jdbc\9.2.1.jre8\mssql-jdbc-9.2.1.jre8.jar"/>
<!-- 一个数据库一个context-->
<!-- defaultModeType="flat"大数据字段,不分表-->
<context id="SqlServerTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 自动识别数据库关键字,默认false,如果没有设置为true,根据SqlReserverdWords中定义的关键字列表;-->
<!-- 一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖-->
<property name="autoDelimitKeywords" value="true"/>
<!-- 生成Java文件的编码-->
<property name="javaFileEncoding" value="utf-8"/>
<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对名的符号,比如ORCAL就是-->
<!-- 双引号,MYSQL默认`反引号`-->
<property name="beginningDelimiter" value="["/>
<property name="endingDelimiter" value="]"/>
<!-- 格式化Java代码-->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- 格式化XML代码-->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<!-- 注释-->
<commentGenerator>
<!-- 是否取消注释-->
<property name="suppressAllComments" value="false"/>
<!-- 是否生成注释代时间戳-->
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--jdbc链接-->
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://192.168.1.128\sql2008r2;DatabaseName=GuHuai_Wgh"
userId="sa"
password="123"
></jdbcConnection>
<!-- 类型转换-->
<javaTypeResolver>
<!-- 是否使用bigDecimal,false可自动转化以下类型(Long,Integer,Short,etc.)-->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成实体类地址-->
<javaModelGenerator targetPackage="com.example.mybatis02.model" targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成mapxml文件-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 生成mapxml对应的client,也就是接口dao-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mybatis02.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="fales"/>
</javaClientGenerator>
<table tableName="User"
enableCountByExample="true"
enableUpdateByExample="true"
enableDeleteByExample="true"
enableSelectByExample="true"
selectByExampleQueryId="true"
>
<property name="UserID" value="false"/>
<!-- 数据库表主键-->
<generatedKey column="UserID" sqlStatement="Sqlserver" identity="true"></generatedKey>
</table>
</context>
</generatorConfiguration>
如上代码不多说,我也是新手,照做就是,网上很多
二、添加pom引用,在pom中添加如下引用,且刷新下载
1、generator插件配置
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- generator 工具配置文件的位置 -->
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<!--注意这个位置要和自己的路径一样-->
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
2、数据库、generator核心库引入
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
三、找到右侧Maven项目下 Plugins下的 mybatis-generator双击执行,如果没有意外将会自动在对应包空间下生成mapper接口、model,且在resources下出现对应的mapper
四、在model同级创建server包,包下面对应类 implements实现mapper接口,光标放类名上,组合键alt+enter实现接口,然后手动不全,部分代码如下:
public class UserService implements UserMapper {
@Autowired
private UserMapper userMapper;
@Override
public int deleteByPrimaryKey(Integer userid) {
return userMapper.deleteByPrimaryKey(userid);
}
@Override
public int insert(User record) {
return userMapper.insert(record);
}
五、创建控制器包,创建控制器
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@ResponseBody
@RequestMapping(value = "/delete",method = RequestMethod.DELETE)
public int deleteByPrimaryKey(@RequestParam Integer userId) throws Exception {
return userService.deleteByPrimaryKey(userId);
}
此处遇到个小插曲,由于我最初创建项目的时候并没有选择web项目,因此项目初始化自然没有
spring-boot-starter-web的依赖,从而导致在控制器上面写RequestMapping和RestController是出不来的,需要将鼠标放在@RestController组合键alt+enter可添加
spring-boot-starter-web依赖,会自动加到pom中 ,很方便。