前言
通用mapper是基于mybatis的插件,整合了常用的简单增删查改,可以免去开发人员对SQL语句的编写。
使用步骤:
目录结构:
1.导入maven坐标
<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>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- 通用mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
2.编写配置application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot
username: root
password: 111111
logging:
level:
com.zyw.springboot_helloworld: debug
3.增加mapper包扫描在启动类上(注意这里@MapperScan导入的包)
import tk.mybatis.spring.annotation.MapperScan;
@MapperScan("com.zyw.springboot_helloworld.mapper")
4.实体类的编写:(这里使用lombok省略getter、setter使用方法不懂的请看之前的博客)
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;
import javax.persistence.Id;
import javax.persistence.Table;
@Data
@Table(name = "account")
public class Account {
@Id
@KeySql(useGeneratedKeys = true)
private Integer id;
private String name;
private Double money;
}
5.AccountMapper,只需要继承通用mapper即可
public interface AccountMapper extends Mapper<Account> {
}
6.service编写
AccountService:
public interface AccountService {
public List<Account> findAll();
public void deleteAccount(Integer id);
public void insertAccount(Account account);
public void updateAccount(Account account);
}
AccountServiceImp:
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountMapper accountMapper;
@Override
public List<Account> findAll() {
return accountMapper.selectAll();
}
@Override
public void deleteAccount(Integer id) {
accountMapper.deleteByPrimaryKey(id);
}
@Override
public void insertAccount(Account account) {
accountMapper.insertSelective(account);
}
@Override
public void updateAccount(Account account) {
Example example=new Example(Account.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("name",account.getName());
accountMapper.updateByExampleSelective(account,example);
}
}
7.AccountController的编写
@RestController
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/findAll")
public List<Account> findAll(){
return accountService.findAll();
}
@RequestMapping("/deleteAccount")
public void deleteAccount(Integer id){
accountService.deleteAccount(id);
}
@RequestMapping("/updateAccount")
public void updateAccount(Account account){
accountService.updateAccount(account);
}
@RequestMapping("insertAccount")
public void insertAccount(Account account){
accountService.insertAccount(account);
}
}
测试SQL语句:
http://127.0.0.1:8080/findAll
SELECT id,name,money FROM account
http://127.0.0.1:8080/deleteAccount?id=7
DELETE FROM account WHERE id = ?
http://127.0.0.1:8080/insertAccount?name=tom&money=100.0
INSERT INTO account ( id,name,money ) VALUES( ?,?,? )
http://127.0.0.1:8080/updateAccount?name=tom&money=100.0
UPDATE account SET name = ?,money = ? WHERE ( ( name = ? ) )