目录
一、创建springboot项目
二、设置maven
三、导入依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>orm_temp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>orm_temp</name>
<description>orm_temp</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
<!-- 一、导入依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--自动生成代码 主要配置这里-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
然后刷新maven
四、mysql数据库
ormtestmybatis.sql 导入数据库即可
/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 8.0.15 : Database - ormtestmybatis
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`ormtestmybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `ormtestmybatis`;
/*Table structure for table `product` */
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`productId` int(20) NOT NULL AUTO_INCREMENT,
`productName` varchar(60) DEFAULT NULL,
`price` float DEFAULT NULL,
PRIMARY KEY (`productId`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
/*Data for the table `product` */
insert into `product`(`productId`,`productName`,`price`) values (1,'小苹果儿',3),(2,'香蕉',12);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
五、配置文件
创建包
配置文件
application.yml
## 数据源配置
spring:
datasource: # 数据库的数据配置
driver-class-name: com.mysql.cj.jdbc.Driver
# url不用换行,由于数据太长了这里换行了
url: jdbc:mysql://localhost:3306/ormtestmybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: 用户名
password: mysql密码
## mybatis 配置
mybatis:
mapper-locations: com/example/orm_temp/mapper/*.xml # 扫描mybatis的实现dao接口*.xml文件
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="com/example/orm_temp/mapper/ProductMapper.xml" />
</mappers>
</configuration>
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>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包 -->
<classPathEntry location="E:\mavenSoft\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/>
<!-- 此处ID和数据库连接处名称一致 -->
<context id="ormtestmybatis" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<jdbcConnection
driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/ormtestmybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false"
userId="root" password="你的mysql密码">
<!-- 如果你不是标准的数据库表命名格式,就有可能出现数据库中的所有同名表被多次生成的情况;
解决mysql8.0以后重复生成所有表的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.example.orm_temp.pojo" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.example.orm_temp.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.orm_temp.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="product" domainObjectName="Product"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true"></table>
</context>
</generatorConfiguration>
生成实体和mapper
点击maven,双击如图所示:
等待···出现BUILD SUCCESS即可
然后刷新一下:
然后就有了
六、测试 完善controller,service
ProductServiceImpl.java
package com.example.orm_temp.service.impl;
import com.example.orm_temp.dao.ProductMapper;
import com.example.orm_temp.pojo.Product;
import com.example.orm_temp.pojo.ProductExample;
import com.example.orm_temp.service.ProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ProductServiceImpl implements ProductService {
@Resource
ProductMapper pm;
@Override
public List<Product> selectAll() {
ProductExample productExample = new ProductExample();
return pm.selectByExample(productExample);
}
@Override
public List<Product> getProductById() {
ProductExample productExample=new ProductExample();
productExample.createCriteria().andProductidEqualTo(2);
return pm.selectByExample(productExample);
}
@Override
public int addProduct(Product product) {
return pm.insert(product);
}
@Override
public List<Product> getProductByName(String name) {
ProductExample productExample=new ProductExample();
productExample.createCriteria().andProductnameEqualTo(name);
return pm.selectByExample(productExample);
}
@Override
public int updProductById(Product product) {
return pm.updateByPrimaryKey(product);
}
@Override
public int delProductById(int id) {
ProductExample productExample=new ProductExample();
productExample.createCriteria().andProductidEqualTo(id);
return pm.deleteByExample(productExample);
}
}
ProductService.java
package com.example.orm_temp.service;
import com.example.orm_temp.pojo.Product;
import java.util.List;
public interface ProductService {
List<Product> selectAll();
List<Product> getProductById();
int addProduct(Product product);
List<Product> getProductByName(String name);
int updProductById(Product product);
int delProductById(int id);
}
MyControllere.java
package com.example.orm_temp.controller;
import com.example.orm_temp.pojo.Product;
import com.example.orm_temp.service.ProductService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class MyController {
@Autowired
ProductService productService;
@RequestMapping("/")
@ResponseBody
public String home(){
String html="";
html+="<a href='./selectAll'>selectAll</a><br>";
html+="<a href='./selectById'>selectById</a><br>";
html+="<a href='./addProduct'>addProduct</a><br>";
html+="<a href='./updProduct'>updProduct</a><br>";
html+="<a href='./delProductById'>delProductById</a><br>";
return html;
}
@RequestMapping("/selectAll")
@ResponseBody
public String selectAll() throws JsonProcessingException {
List<Product> productList = productService.selectAll();
ObjectMapper objectMapper=new ObjectMapper();
String result=objectMapper.writeValueAsString(productList);
System.out.println(result.replace("{","\n{"));
return "selectAll\n"+result.replace("{","<br>{");
}
@RequestMapping("/selectById")
@ResponseBody
public String test() throws JsonProcessingException {
List<Product> productList = productService.getProductById();
ObjectMapper objectMapper=new ObjectMapper();
String result=objectMapper.writeValueAsString(productList);
System.out.println(result);
return "selectById\n"+result;
}
@RequestMapping("/addProduct")
@ResponseBody
public String addProduct() throws JsonProcessingException {
Product product=new Product();
product.setPrice(10.5F);
product.setProductname("水蜜桃");
ObjectMapper objectMapper=new ObjectMapper();
String result=objectMapper.writeValueAsString(product);
System.out.println(result);
return "addProduct\n"+result + "\n" + productService.addProduct(product);
}
@RequestMapping("/updProduct")
@ResponseBody
public String updProduct() throws JsonProcessingException {
Product product=productService.getProductByName("水蜜桃").get(0);
product.setPrice(product.getPrice()+0.5F);
ObjectMapper objectMapper=new ObjectMapper();
String result=objectMapper.writeValueAsString(product);
System.out.println(result);
return "updProduct\n"+result + "\n" + productService.updProductById(product);
}
@RequestMapping("/delProductById")
@ResponseBody
public String delProductById() throws JsonProcessingException {
List<Product> productList=productService.getProductByName("水蜜桃");
if(productList.size()>0){
ObjectMapper objectMapper=new ObjectMapper();
String result=objectMapper.writeValueAsString(productList);
System.out.println(result);
int id=productList.get(0).getProductid();
return "delProductById\n"+result + "\n" + productService.delProductById(id);
}
return "删除失败";
}
}
最后还有启动类:
在启动类添加扫描mapper包
@MapperScan(basePackages = {"com.example.ormtest.dao"})
OrmTeampApplication.java
package com.example.orm_temp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = {"com.example.orm_temp.dao"})
public class OrmTempApplication {
public static void main(String[] args) {
SpringApplication.run(OrmTempApplication.class, args);
}
}
最后启动项目,如果报错考虑生成的mapper有重复,删除自动生成的实体和mapper XML , 间隔10秒后 重新生成,再重新加载试试, 或手动删除重复的试试
浏览器访问localhost:8080/
完成!