TKMyBatis ç®ä»
TKMybatis æ¯åºäº Mybatis æ¡æ¶å¼åçä¸ä¸ªå·¥å ·ï¼å é¨å®ç°äºå¯¹å表çåºæ¬æ°æ®æä½ï¼åªéè¦ç®åç»§æ¿ TKMybatis æä¾çæ¥å£ï¼å°±è½å¤å®ç°æ éç¼åä»»ä½ sql å³è½å®æå表æä½ã
ä¸é¢ç®åä»ç»ä¸ MyBatis ï¼ MyBatis æ¯ä¸æ¬¾ä¼ç§çæä¹ å±æ¡æ¶ï¼å®æ¯æèªå®ä¹ SQLãåå¨è¿ç¨ä»¥åé« çº§æ å°ãMyBatis å é¤äºå ä¹ææç JDBC 代ç 以å设置åæ°åè·åç»æéçå·¥ä½ãMyBatis å¯ä»¥éè¿ ç®åç XML æ注解æ¥é ç½®åæ å°åå§ç±»åãæ¥å£å Java POJOï¼Plain Old Java Objectsï¼æ®éèå¼ Java 对象ï¼ä¸ºæ°æ®åºä¸çè®°å½ã
TKMyBatiså¿«éå¼å§
MAVENä¾èµ
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
å¨å¯å¨ç±»ä¸é ç½®MAPPERSCANæ«æ
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.hogwartsmini.demo.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
å®ä½ç±»ä¸ä½¿ç¨
å¨å®ä½ç±»ä¸ï¼å¸¸ç¨ç注解åæä¹ä¸ºï¼
Tableï¼æè¿°æ°æ®åºè¡¨ä¿¡æ¯ï¼ä¸»è¦å±æ§æ name(表å)ãschemaãcatalogãuniqueConstraints çã
Idï¼æå®è¡¨ä¸»é®å段ï¼æ²¡æå±æ§å¼ã
Columnï¼æè¿°æ°æ®åºå段信æ¯ï¼ä¸»è¦å±æ§æ name(å段å)ãcolumnDefinitionãinsertableãlengthã nullable(æ¯å¦å¯ä¸ºç©º)ãprecisionãscaleãtableãuniqueãupdatable çã
ColumnTypeï¼æè¿°æ°æ®åºå段类åï¼å¯å¯¹ä¸äºç¹æ®ç±»åä½é ç½®ï¼è¿è¡ç¹æ®å¤çï¼ä¸»è¦å±æ§æ jdbcTypeãcolumnãtypeHandler çã
DAO ä¸ä½¿ç¨
- å建ä¸å¡ Mapper å ¬å ±æ¥å£
é¦å å建ä¸ä¸ªå ¬å ±æ¥å£ï¼ç»§æ¿ Mapper, MySqlMapper, IdsMapper ä¸ä¸ªç±»ï¼ç¨äºåç»ä¸å¡ Mapper æ¥å£ ç´æ¥å®ç°ã
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MySqlExtensionMapper<T> extends Mapper<T>, MySqlMapper<T>,
IdsMapper<T> {
}
- å建ä¸å¡Mapperæ¥å£
å建HogwartsTestUserMapper.javaæ¥å£
import com.hogwartsmini.demo.common.MySqlExtensionMapper;
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import org.springframework.stereotype.Repository;
@Repository
public interface HogwartsTestUserMapper extends
MySqlExtensionMapper<HogwartsTestUser> {
}
SERVICEå±ä¸ä½¿ç¨
- æ¥è¯¢
SPRING BOOTé ç½®æ件
spring:
application:
name: aitest
#æ°æ®åºé
置信æ¯
datasource:
url: jdbc:mysql://localhost:3306/aitest_mini?
allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/
Shanghai
username: hogwarts
password: db@hogwarts
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.hogwartstest.aitestmini.entity
configuration:
mapUnderscoreToCamelCase: true
logging:
level:
com.hogwartstest.aitestmini.dao: debug #æå°sql
示ä¾è¡¨ç»æ
CREATE TABLE `hogwarts_test_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主é®',
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT
NULL COMMENT 'ç¨æ·å',
`password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT
NULL COMMENT 'å¯ç ',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT
NULL COMMENT 'é®ç®±',
`auto_create_case_job_name` varchar(50) CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci DEFAULT NULL COMMENT 'èªå¨çæç¨ä¾jobå称 ä¸ä¸ºç©ºæ¶è¡¨ç¤ºå·²ç»å建
job',
`start_test_job_name` varchar(50) CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci DEFAULT NULL COMMENT 'æ§è¡æµè¯jobå称 ä¸ä¸ºç©ºæ¶è¡¨ç¤ºå·²ç»å建job',
`default_jenkins_id` int DEFAULT NULL COMMENT 'é»è®¤Jenkinsæå¡å¨',
`create_time` datetime NOT NULL COMMENT 'å建æ¶é´',
`update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='ç¨æ·è¡¨'ï¼
CONTROLLER代ç
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import com.hogwartsmini.demo.service.HogwartsTestUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author tlibn
* @Date 2020/7/16 17:14
**/
@Api(tags = "éæ ¼æ²å
¹æµè¯å¦é¢-ç¨æ·ç®¡ç模å")
@RestController
@RequestMapping("hogwartsUser")
public class HogwartsTestUserDbController {
@Autowired
private HogwartsTestUserService hogwartsTestUserService;
@ApiOperation("ç¨æ·æ³¨å")
@PostMapping("register")
public HogwartsTestUser register(
@RequestBody HogwartsTestUser hogwartsTestUser){
return hogwartsTestUserService.save(hogwartsTestUser);
}
@ApiOperation("ç¨æ·ä¿¡æ¯ä¿®æ¹æ¥å£")
@PutMapping()
public HogwartsTestUser updateUserInfo(
@RequestBody HogwartsTestUser hogwartsTestUser){
return hogwartsTestUserService.update(hogwartsTestUser);
}
@ApiOperation("æ ¹æ®ç¨æ·idå é¤ç¨æ·ä¿¡æ¯")
@DeleteMapping("{userId}")
public Integer delete(@PathVariable("userId") Integer userId){
return hogwartsTestUserService.delete(userId);
}
@ApiOperation("æ ¹æ®ç¨æ·åæ¥è¯¢")
@GetMapping("byName")
public List<HogwartsTestUser> getByName(
@RequestParam("userName") String userName){
HogwartsTestUser hogwartsTestUser = new HogwartsTestUser();
hogwartsTestUser.setUserName(userName);
return hogwartsTestUserService.getByName(hogwartsTestUser);
}
HOGWARTSTESTUSERSERVICE代ç
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import java.util.List;
public interface HogwartsTestUserService {
/**
* ä¿å
* @param hogwartsTestUser
* @return
*/
HogwartsTestUser save(HogwartsTestUser hogwartsTestUser);
/**
* æ´æ°
* @param hogwartsTestUser
* @return
*/
HogwartsTestUser update(HogwartsTestUser hogwartsTestUser);
/**
* æ ¹æ®ç¨æ·åæ¥è¯¢
* @param hogwartsTestUser
* @return
*/
List<HogwartsTestUser> getByName(HogwartsTestUser hogwartsTestUser);
/**
* æ ¹æ®ç¨æ·idå é¤ç¨æ·ä¿¡æ¯
* @param userId
* @return
*/
Integer delete(Integer userId);
}
HOGWARTSTESTUSERSERVICEIMPL代ç
import com.hogwartsmini.demo.dao.HogwartsTestUserMapper;
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import com.hogwartsmini.demo.service.HogwartsTestUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @Author tlibn
* @Date 2020/7/17 11:03
**/
@Service
public class HogwartsTestUserServiceImpl implements HogwartsTestUserService {
@Autowired
private HogwartsTestUserMapper hogwartsTestUserMapper;
/**
* ä¿å
*
* @param hogwartsTestUser
* @return
*/
@Override
public HogwartsTestUser save(HogwartsTestUser hogwartsTestUser) {
hogwartsTestUser.setCreateTime(new Date());
hogwartsTestUser.setUpdateTime(new Date());
hogwartsTestUserMapper.insertUseGeneratedKeys(hogwartsTestUser);
return hogwartsTestUser;
}
/**
* æ´æ°
*
* @param hogwartsTestUser
* @return
*/
@Override
public HogwartsTestUser update(HogwartsTestUser hogwartsTestUser) {
hogwartsTestUser.setCreateTime(new Date());
hogwartsTestUser.setUpdateTime(new Date());
hogwartsTestUserMapper.updateByPrimaryKeySelective(hogwartsTestUser);
return hogwartsTestUser;
}
/**
* æ ¹æ®ç¨æ·åæ¥è¯¢
*
* @param hogwartsTestUser
* @return
*/
@Override
public List<HogwartsTestUser> getByName(HogwartsTestUser hogwartsTestUser) {
List<HogwartsTestUser> hogwartsTestUserList =
hogwartsTestUserMapper.select(hogwartsTestUser);
return hogwartsTestUserList;
}
/**
* æ ¹æ®ç¨æ·idå é¤ç¨æ·ä¿¡æ¯
*
* @param userId
* @return
*/
@Override
public Integer delete(Integer userId) {
HogwartsTestUser hogwartsTestUser = new HogwartsTestUser();
hogwartsTestUser.setId(userId);
hogwartsTestUserMapper.delete(hogwartsTestUser);
return userId;
}
}
使ç¨POSTMANæµè¯å¢å æ¹æ¥
æ°å¢
POSThttp://1270.0.1:8081/hogwartsUser/register
请æ±åæ°
{
"userName": "éæ ¼æ²å
¹test123",
"password": "test123"
}
ååºåæ°
{
"id": 15,
"userName": "éæ ¼æ²å
¹test123",
"password": "test123",
"email": null,
"autoCreateCaseJobName": null,
"startTestJobName": null,
"defaultJenkinsId": null,
"createTime": "2021-04-14T09:37:58.358+00:00",
"updateTime": "2021-04-14T09:37:58.358+00:00"
}
æ¥è¯¢
GET http://127.0.0.1:8081/hogwartsUser/byName?userName=éæ ¼æ²å ¹test123
请æ±åæ°
è§è¯·æ±å°åä¸ userName = éæ ¼æ²å
¹test123
ååºåæ°
[
{
"id": 15,
"userName": "éæ ¼æ²å
¹test123",
"password": "test123",
"email": null,
"autoCreateCaseJobName": null,
"startTestJobName": null,
"defaultJenkinsId": null,
"createTime": "2021-04-14T09:37:58.000+00:00",
"updateTime": "2021-04-14T09:37:58.000+00:00"
}
]
ä¿®æ¹
PUT http://127.0.0.1:8081/hogwartsUser
请æ±åæ°
{
"id": 15,
"userName": "éæ ¼æ²å
¹test12345"ï¼
"password": "test123"
}
ååºåæ°
{
"id": 15,
"userName": "éæ ¼æ²å
¹test12345",
"password": "test123",
"email": null,
"autoCreateCaseJobName": null,
"startTestJobName": null,
"defaultJenkinsId": null,
"createTime": "2021-04-14T09:43:45.018+00:00",
"updateTime": "2021-04-14T09:43:45.018+00:00"
}
å é¤
DELETE http://127.0.0.1:8081/hogwartsUser/15
请æ±åæ°
è§è¯·æ±å°åä¸15
ååºåæ°
15
æç´¢å¾®ä¿¡å ¬ä¼å·ï¼TestingStudioéæ ¼æ²å ¹ç干货é½å¾ç¡¬æ ¸