赞
踩
天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习新东西是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
配置mysql和mybatis
数据库提前建表
自动生成代码
增删改查代码
JDK版本:1.8
maven版本:3.9.0
开发工具:IDEA社区版ideaIC-2018.3
项目框架:spring boot 版本为 2.6.3 springboot搭建传送门
spring boot、mysql、mybatis的依赖及插件
<dependencies> <!--SpringBoot启动依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.6.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.3</version> <scope>test</scope> </dependency> <!--集成mysql数据库--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>2.6.1</version> </dependency> <!--spring boot集成mybatis的依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.23</version> </dependency> </dependencies> <!--插件部分--> <build> <plugins> <!--添加mybatis generator maven插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.4.RELEASE</version> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.7</version> <configuration> <!--generatorConfig.xml位置--> <configurationFile>src/main/resources/code_generator.xml</configurationFile> <verbose>true</verbose> <!-- 如果本来就有mapper、dao文件了就覆盖--> <overwrite>true</overwrite> </configuration> <executions> <execution> <id>Generate MyBatis Artifacts</id> <!--<phase>package</phase>--> <phase>deploy</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> <!--此处必须添加mysql驱动包--> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.26</version> </dependency> </dependencies> </plugin> </plugins> <!--扫描指定的配置文件 如果mapper的xml文件没有放在resources目录下,而是放在了和接口类在一起的包,这里就必须配置--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.csv</include> <include>**/*.yml</include> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.csv</include> <include>**/*.yml</include> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
激活环境
spring:
profiles:
active: dev
数据库连接
spring:
application:
name: springboot_union
datasource:
#url切换数据库之后如果对应数据库名称和路径有变动,需要修改url
url: jdbc:mysql://localhost:3306/springboot_union?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
# serverTimezone=GMT%2B8 设置时区
# useUnicode=true 是否使用Unicode编码
# characterEncoding=utf8 设定字符集
# autoReconnect=true 是否自动重连
# allowMultiQueries=true 是否允许批量操作
mybatis相关的数据库连接参数,以及自动生成代码的参数
#mysql连接驱动的版本 spring.datasource.driverLocation=mysql-connector-java-8.0.21.jar #mysql驱动类名 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver #mysql数据库的访问地址(localhost)、端口号(3306)、数据库名称(springboot_union)及其他配置 spring.datasource.url=jdbc:mysql://localhost:3306/springboot_union?useUnicode=true&characterEncoding=utf-8&useSSL=false #数据库用户名 spring.datasource.username=root #数据库用户密码 spring.datasource.password=root #根据此表名生成代码 tableName=tb3_mysql_mybatis_test #生成的实体类和接口实现类所存放的位置(如果项目中不存在此包名则自动生成此包) entityPackage=com.spring_demo.entity #数据访问xml和数据访问接口代码所存放的位置(如果项目中不存在此包名则自动生成此包) mapperPackage=com.spring_demo.mapper
可在文件中定义表名,会根据此表明生成代码
可在文件中定义包名,会将代码存放到对应的包内
在数据库中建表
建表语句
CREATE TABLE IF NOT EXISTS `tb3_mysql_mybatis_test`(
`id` INT UNSIGNED AUTO_INCREMENT,
`user_name` VARCHAR(100) ,
`user_id` VARCHAR(100) ,
`address` VARCHAR(100) ,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
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="jdbc.properties"/> <context id="sqlserverTables" targetRuntime="MyBatis3"> <!-- 生成的pojo,将implements Serializable--> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin> <!-- 可序列化--> <!--替换默认生成的dao-Example--> <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin"> <property name="searchString" value="Example$" /> <property name="replaceString" value="Impl" /> </plugin> <commentGenerator> <!-- 是否生成注释代时间戳--> <property name="suppressDate" value="true" /> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 数据库链接URL、用户名、密码 --> <jdbcConnection driverClass="${spring.datasource.driverClassName}" connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}" password="${spring.datasource.password}"> </jdbcConnection> <!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer--> <!--true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal--> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!--生成model模型,对应的包路径,以及文件存放路径(targetProject),targetProject可以指定具体的路径,如./src/main/java,--> <!--也可以使用“MAVEN”来自动生成,这样生成的代码会在target/generatord-source目录下--> <!--<javaModelGenerator targetPackage="com.joey.mybaties.test.pojo" targetProject="MAVEN">--> <javaModelGenerator targetPackage="${entityPackage}" targetProject="./src/main/java"> <property name="enableSubPackages" value="true"/> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--对应的mapper.xml文件 --> <sqlMapGenerator targetPackage="${mapperPackage}" targetProject="./src/main/java"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 对应的Mapper接口类文件 --> <javaClientGenerator type="XMLMAPPER" targetPackage="${mapperPackage}" targetProject="./src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 列出要生成代码的所有表,这里配置的是不生成Example文件 --> <!-- 配置表信息 tableName 表名 domainObjectName 实体类名称--> <table tableName="${tableName}" enableCountByExample="false" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="false"> <property name="useActualColumnNames" value="false"/> </table> <!-- <table tableName="${tableName}"--> <!-- domainObjectName="MybatisUser"--> <!-- enableCountByExample="false"--> <!-- enableUpdateByExample="true"--> <!-- enableDeleteByExample="true"--> <!-- enableSelectByExample="true"--> <!-- selectByExampleQueryId="false">--> <!-- <property name="useActualColumnNames" value="false"/>--> <!-- </table>--> </context> </generatorConfiguration>
可根据实际生成的代码来修改代码
CurdController.java
package com.spring_demo.controller; import com.alibaba.fastjson.JSONObject; import com.spring_demo.entity.Tb3MysqlMybatisTest; import com.spring_demo.entity.Tb3MysqlMybatisTestImpl; import com.spring_demo.mapper.Tb3MysqlMybatisTestMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @ClassDescription: 操作数据库的类 * @Author:李白 * @Date:2023/4/10 12:40 */ @RestController @RequestMapping("crud") public class CrudController { @Autowired Tb3MysqlMybatisTestMapper crudMapper; /** * 新增数据 * @param testInfo * @return */ @RequestMapping(value = "create", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public JSONObject create(@RequestBody Tb3MysqlMybatisTest testInfo){ crudMapper.insert(testInfo); JSONObject insertObj = new JSONObject(); insertObj.put("insertInfo",testInfo); return insertObj; } /** * 查询数据 * @return */ @RequestMapping(value = "read", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public JSONObject read(){ Tb3MysqlMybatisTestImpl testImpl = new Tb3MysqlMybatisTestImpl(); List<Tb3MysqlMybatisTest> testList = crudMapper.selectByExample(testImpl); JSONObject checkObj = new JSONObject(); checkObj.put("checkObj",testList); return checkObj; } /** * 更新数据 * @param testInfo * @return */ @RequestMapping(value = "update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public JSONObject update(@RequestBody Tb3MysqlMybatisTest testInfo){ Tb3MysqlMybatisTestImpl testImpl = new Tb3MysqlMybatisTestImpl(); Tb3MysqlMybatisTestImpl.Criteria criteria = testImpl.createCriteria(); criteria.andUserIdEqualTo(testInfo.getUserId()); crudMapper.updateByExampleSelective(testInfo, testImpl); JSONObject updateObj = new JSONObject(); updateObj.put("updateObj", testInfo); return updateObj; } /** * 删除数据 * @param testInfo * @return */ @RequestMapping(value = "delete", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public JSONObject delete(@RequestBody Tb3MysqlMybatisTest testInfo){ Tb3MysqlMybatisTestImpl testImpl = new Tb3MysqlMybatisTestImpl(); Tb3MysqlMybatisTestImpl.Criteria criteria = testImpl.createCriteria(); criteria.andUserIdEqualTo(testInfo.getUserId()); crudMapper.deleteByExample(testImpl); JSONObject deleteObj = new JSONObject(); deleteObj.put("deleteObj",testInfo); return deleteObj; } }
注:想要更为详细的讲解文章可以参考下面这篇,分四步,spring boot搭建-集成mysql-集成mybatis-增删改查编写
详细篇–传送门
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。