一、简介
tk.mybatis可以节省程序员的大部分时间,对于程序员来说关于一张表的操作无非就是增删改查,tk.mybatis提供了一些基本操作的SQL语句,比如说按表的主键查询、删除等基本操作。我们接下来就来介绍一些tk.mybatis的简单使用吧。
我使用的maven依赖如下
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.3</version>
</dependency>
二、注意
我使用的SpringBoot,因为使用了tk.mybatis,所以在SpringBoot启动类XXXApplication类里要使用tk.mybatis的@MapperScan,如下图所示
这里与普通的mybatis不同,一定要记得修改!!!
三、使用( 我这里使用的springboot+mybatis,反正就是Dao层、Service层、Controller层的操作,我就不详细解释了)
1.Entity层
1.1这里我随便写一个User类,使用tkmybaist时要给实体类注解,比如说@Table就是表名,@Id就是主键,@Column就是列。
这里值得注意的是表的列名和类的字段名的对比,比如说我表的字段名是user_id,那么映射成类的字段应该是userId,符合驼峰命名法!
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "user")
public class User {
@Id
private Integer userId;
@Column
private String username;
@Column
private String password;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1.2 这里给出我的表
2.Dao层
2.1 这里我们要写一个BaseMapper来继承tk.mybatis提供的各种接口
import tk.mybatis.mapper.common.ConditionMapper;
import tk.mybatis.mapper.common.ExampleMapper;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface BaseMapper<T> extends tk.mybatis.mapper.common.BaseMapper<T>, MySqlMapper<T>, IdsMapper<T>, ConditionMapper<T>, ExampleMapper<T> {
}
2.2 然后让你写的Dao接口继承这个接口
import java.util.List;
public interface UserDao extends BaseMapper<User> {
public User queryUserById(Integer id);
}
2.3 我这里为了方便解耦,所以写了DaoImpl,其实也可以不写
这里要用组合,不能用继承,不然你就要自己实现tk.mybatis提供的各种方法!!!
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Component
public class UserDaoImpl{
@Resource
private UserDao userDao;
public User queryUserById(Integer id){
return userDao.selectByPrimaryKey(id);
}
}
2.4 你看,我根本不要自己去实现,继承BaseMapper的类,你只要点(.)一下不就出来一堆方法了吗!
3.Service层
3.1 写个服务层接口
import java.util.List;
public interface UserService {
public User queryUserById(Integer id);
}
3.2 再写个实现类
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDaoImpl userDaoImpl;
@Override
public User queryUserById(Integer id) {
return userDaoImpl.queryUserById(id);
}
}
4.Controller层
4.1随手写个Controller类
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
@Controller
public class UserController {
@Resource
private UserServiceImpl userService;
@ResponseBody
@RequestMapping("queryUserById")
public User getUserById(Integer id){
return userService.queryUserById(id);
}
}