《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
3.根据主键该表查询该表单个数据
4.根据条件查询该表单个数据
5.检测数据是否存在
6.统计该表数据条数
7.根据主键删除数据
8.根据条件删除数据
9.根据主键修改数据
10.根据条件修改数据
11.新增数据
12.分页查询
13.当然还有挺多,不一一列举了
创建一个springboot项目,在pom.xml里导入用到的依赖:
org.springframework.boot
spring-boot-starter-jdbc
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
com.alibaba
druid-spring-boot-starter
1.1.10
tk.mybatis
mapper-spring-boot-starter
2.1.2
org.projectlombok
lombok
1.16.10
true
com.alibaba
fastjson
1.2.58
org.springframework.boot
spring-boot-starter-web
2.1.4.RELEASE
数据库表,简单一张表:
对于的User.java实体类:
import lombok.Data;
import javax.persistence.*;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
@Data
@Table(name=“user”)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = “JDBC”)
private Integer id;
@Column(name = “name”)
private String name;
@Column(name = “age”)
private Integer age;
}
然后是UserMapper.java(注意看细节,继承了Mapper 来自于tk-mybatis),只要继承了这个Mapper,那么文章前头提到的那些代码和sql,我们都不用再去写了,我们只需要写一些多表的,业务复杂的需要额外扩展的就行。:
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
public interface UserMapper extends Mapper {
//额外扩展的方法,如一些复杂的查询语句等
List
}
细心的人发现了,我们这次的mapper上面没有写@Mapper。
是的,我们现在进行一个关键的操作,在启动类上,使用tk-mybatis的扫描mapper注解:
pojo和mapper 两层已经完毕了,那么对接持久层需要做的我们已经完毕了。
service层,我们在这层为了方面项目的扩展,后期能省掉更多的接口复写代码(是不是很多人很烦service层里面的代码跟mapper层对于一些普通的crud操作,基本代码没什么区别),
我们需要做一个base层,也就是后续其他业务的表扩展,都同一继承和实现base层即可。
BaseService.java :
import org.apache.ibatis.session.RowBounds;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
public interface BaseService extends Mapper {
@Override
int deleteByPrimaryKey(Object o);
@Override
int delete(T o);
@Override
int insert(T o);
@Override
int insertSelective(T o);
@Override
List selectAll();
@Override
T selectByPrimaryKey(Object o);
@Override
public int selectCount(T o);
@Override
public List select(T o);
@Override
public T selectOne(T o);
@Override
public int updateByPrimaryKey(T o);
@Override
public int updateByPrimaryKeySelective(T o);
@Override
public int deleteByExample(Object o);
@Override
public List selectByExample(Object o);
@Override
public int selectCountByExample(Object o);
@Override
public T selectOneByExample(Object o);
@Override
public int updateByExample(T o, Object o2);
@Override
public int updateByExampleSelective(T o, Object o2);
@Override
public List selectByExampleAndRowBounds(Object o, RowBounds rowBounds);
@Override
public List selectByRowBounds(T o, RowBounds rowBounds);
}
BaseServiceImpl.java:
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
public abstract class BaseServiceImpl implements BaseService {
@Autowired
private Mapper mapper;
@Override
public int deleteByPrimaryKey(Object o) {
return mapper.deleteByPrimaryKey(o);
}
@Override
public int delete(T t) {
return mapper.delete(t);
}
@Override
public int insert(T t) {
return mapper.insert(t);
}
@Override
public int insertSelective(T t) {
return mapper.insertSelective(t);
}
@Override
public List selectAll() {
return mapper.selectAll();
}
@Override
public int selectCount(T t) {
return mapper.selectCount(t);
}
@Override
public List select(T t) {
return mapper.select(t);
}
@Override
public T selectOne(T t) {
return mapper.selectOne(t);
}
@Override
public int updateByPrimaryKey(T t) {
return mapper.updateByPrimaryKey(t);
}
@Override
public int updateByPrimaryKeySelective(T t) {
return mapper.updateByPrimaryKeySelective(t);
}
@Override
public int deleteByExample(Object t) {
return mapper.deleteByExample(t);
}
@Override
public List selectByExample(Object t) {
return mapper.selectByExample(t);
}
@Override
public int selectCountByExample(Object t) {
return mapper.selectCountByExample(t);
}
@Override
public T selectOneByExample(Object o) {
return mapper.selectOneByExample(o);
}
@Override
public int updateByExample(T t, Object o) {
return mapper.updateByExample(t, o);
}
@Override
public int updateByExampleSelective(T t, Object o) {
return mapper.updateByExampleSelective(t, o);
}
@Override
public List selectByExampleAndRowBounds(Object o, RowBounds rowBounds) {
return mapper.selectByExampleAndRowBounds(o, rowBounds);
}
@Override
public List selectByRowBounds(T t, RowBounds rowBounds) {
return mapper.selectByRowBounds(t, rowBounds);
}
@Override
public boolean existsWithPrimaryKey(Object o) {
return mapper.existsWithPrimaryKey(o);
}
@Override
public T selectByPrimaryKey(Object o) {
return mapper.selectByPrimaryKey(o);
}
}
ok,业务层的base层已经完成,回归业务,
UserService.java:
import com.jc.tkmybatis.base.BaseService;
import com.jc.tkmybatis.pojo.User;
import java.util.List;
import java.util.Map;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
public interface UserService extends BaseService {
//仅仅需要编写额外扩展的业务方法
List
}
UserServiceImpl.java:
import com.jc.tkmybatis.base.BaseServiceImpl;
import com.jc.tkmybatis.mapper.UserMapper;
import com.jc.tkmybatis.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
@Service
public class UserServiceImpl extends BaseServiceImpl implements UserService {
//UserMapper需要继承tk-myabtis的Mapper,这样才能顺利使用到tk-mybatis帮我们写好的N多mapper层方法和sql语句
@Autowired
UserMapper userMapper;
//仅仅需要编写额外扩展的业务方法
@Override
public List
return userMapper.getMyCustom(age);
}
}
到这里,我们其实整合tk-mybatis已经完毕了!(后面有controller层来演示怎么使用)
因为我们为了确保可以额外扩展,我们还是建了mapper.xml的,所以我们在yml加上对于的mapper.xml文件扫描配置:
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
对于userMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>SELECT *
FROM user
WHERE age>=#{age}
mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>controller层,我们写一些curd的接口来进行使用测试:
UserController.java
PS: 我们在controller层注入 UserService后,我们就可以使用tk-mybatis帮我们实现的那一堆方法了。
import com.jc.tkmybatis.pojo.User;
import com.jc.tkmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。
这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
GVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mzg3OTQw,size_16,color_FFFFFF,t_70)
import com.jc.tkmybatis.pojo.User;
import com.jc.tkmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
-
@Author : JCccc
-
@CreateTime : 2020/8/13
-
@Description :
**/
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。
[外链图片转存中…(img-0JlCgfHa-1714754003612)]
这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!