SpringBoot集成tk.mapper通用mapper,针对特殊业务也可写xml文件sql

本文介绍如何在Spring Boot项目中集成MyBatis,并通过具体步骤演示从创建Maven项目到实现数据库操作的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先创建项目一个maven项目引入如下依赖

<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 
        http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.itchao</groupId>
	<artifactId>itchao-mybatis</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<!-- SpringBoot web 核心组件 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- mysql 依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- SpringBoot 对lombok 支持 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
		<!--mapper -->
		<dependency>
			<groupId>tk.mybatis</groupId>
			<artifactId>mapper-spring-boot-starter</artifactId>
			<version>1.1.0</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>
	</dependencies>
</project>

项目结构如下图

5906093be45c623c36150a39c4633dc6d5d.jpg

 

首先需要定义一个基类接口MyBaseMapper

package cn.itcaho.base;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface MyBaseMapper<T> extends Mapper<T>,MySqlMapper<T>{

}

创建表

CREATE TABLE `tb_brand` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL COMMENT '品牌名称',
  `first_char` varchar(1) DEFAULT NULL COMMENT '品牌首字母',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;

创建实体对象

package cn.itcaho.pojo;


import lombok.Data;

@Data
public class TbBrand {
	
	private Long id;
	
	private String name;

	private String firstChar;
	
}

创建业务mapper接口

package cn.itcaho.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import cn.itcaho.base.MyBaseMapper;
import cn.itcaho.pojo.TbBrand;

@Mapper
@Component
public interface BrandMapper extends MyBaseMapper<TbBrand>{

	//自己写xml
	List<TbBrand> getBrandByName(TbBrand brand);

	@Select("select id,name,first_char as firstChar from tb_brand")
	List<TbBrand> getBrandAll();

}

书写业务Service

package cn.itcaho.service;

import java.util.List;

import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.itcaho.mapper.BrandMapper;
import cn.itcaho.pojo.TbBrand;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;

@Service
public class BrandService {
	
	@Autowired
	private BrandMapper brandMapper;
	
	//内置通用mapper全量查询
	public List<TbBrand> findAll(){
		return brandMapper.selectAll();
	}
	
	//内置通用mapper按条件查询
	public List<TbBrand> findName(TbBrand brand){
		Example example = new Example(TbBrand.class);
		Criteria createCriteria = example.createCriteria();
		createCriteria.andEqualTo(brand);
		return  brandMapper.selectByExample(example);
	}
	
	//自己书写xml查询
	public List<TbBrand> getBrandByName(TbBrand brand){
		return  brandMapper.getBrandByName(brand);
	}
	
	//注解查询
	public List<TbBrand> getBrandAll(){
		return brandMapper.getBrandAll();
	}

}

在src/main/resouces目录下创建mapper目录用于存放通过xml书写sql的文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.itcaho.mapper.BrandMapper">
	
	<select id="getBrandByName" resultType="cn.itcaho.pojo.TbBrand">
		select 
			id as id,
			name as name,
			first_char as firstChar
		 from
		 tb_brand
		 where name = #{name} 
	</select>
</mapper>

书写Controller

package cn.itcaho.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.itcaho.pojo.TbBrand;
import cn.itcaho.service.BrandService;

@RestController
@RequestMapping("/brand")
public class BrandController {

	@Autowired
	private BrandService brandService;
	@RequestMapping("/all")
	public List<TbBrand> findAll(){
		return brandService.findAll();
	}
	@RequestMapping("/getBrandByName")
	public List<TbBrand> getBrandByName(TbBrand brand){
		return brandService.getBrandByName(brand);
	}
	
	@RequestMapping("/getBrandAll")
	public List<TbBrand> getBrandAll(){
		return brandService.getBrandAll();
	}
}

核心来了,重点application.yml的配置

server:
  port: 9000

spring:
  datasource:
    url: jdbc:mysql://192.168.100.131:3306/itchao-store
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  type-aliases-package: cn.itchao.pojo
  mapper-locations: classpath:mapper/*.xml 
  configuration: 
    map-underscore-to-camel-case: true  ##开启驼峰
mapper:
  mappers: cn.itcaho.base.MyBaseMapper  ##扫描基类接口
  identity: mysql
logging:
  level: 
    cn: 
     itchao: 
      mapper: debug
    

书写启动类

package cn.itcaho;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
	public static void main(String[] args) throws Exception {
		SpringApplication.run(Application.class, args);
	}

}

启动测试

e8d58cdd6892c41c9a5004d9d8f87dbb498.jpg

xml方式的接口测试

00497fc4c809a0e89126a37222c0db608d3.jpg

源码地址:https://gitee.com/shxjinchao/itchao-mybatis.git

转载于:https://my.oschina.net/shxjinchao/blog/1924089

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值