Springboot-Mybatis(增删改查)
(1) pom.xml
<!-- -starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!-- -starter-web -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- -starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- -configuration-processor -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis-spring-boot -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
(2) application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///springboot_mybatis
spring.datasource.username=root
spring.datasource.password=root
(3) 数据表
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`money` DOUBLE DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES (NULL, 'aaa', '1000');
INSERT INTO `account` VALUES (NULL, 'bbb', '2000');
INSERT INTO `account` VALUES (NULL, 'ccc', '3000');
SELECT * FROM Account;
(4) Account.java
public class Account {
private int id;
private String name;
private double money;
// get / set 方法省略 .... ....
@Override
public String toString() {
return "ID: " + id + ", Name: " + name + ", Money: " + money;
}
}
IAccountMapper.java
@Mapper
public interface IAccountMapper {
@Select("select id, name as name, money as money from account")
List<Account> findList();
@Select("select id, name as name, money as money from account where id = #{id}")
Account findById(@Param("id") int id);
@Insert("insert into account(name, money) values(#{name}, #{money})")
int add(@Param("name") String name, @Param("money") double money);
@Update("update account set name = #{name}, money = #{money} where id = #{id}")
int update(@Param("name") String name, @Param("money") double money, @Param("id") int id);
@Delete("delete from account where id = #{id}")
int delete(int id);
}
IAccountService.java
public interface IAccountService {
List<Account> findList();
Account findById(int id);
int add(Account account);
int update(Account account);
int deleteById(int id);
}
AccountServiceImpl.java
@Service
@Transactional
public class AccountServiceImpl implements IAccountService {
@Autowired
private IAccountMapper accountMapper;
public List<Account> findList() {
return accountMapper.findList();
}
public Account findById(int id) {
return accountMapper.findById(id);
}
public int add(Account account) {
return accountMapper.add(account.getName(), account.getMoney());
}
public int update(Account account) {
return accountMapper.update(account.getName(), account.getMoney(), account.getId());
}
public int deleteById(int id) {
return accountMapper.delete(id);
}
}
AccountController.java
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
private IAccountService accountService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<Account> findAccounts() {
return accountService.findList();
}
@RequestMapping(value = "/findone/{idd}", method = RequestMethod.GET)
public Account findById(@PathVariable("idd") Integer id) {
return accountService.findById(id);
}
@RequestMapping(value = "/delete/{id}")
public String deleteById(@PathVariable("id") Integer id) {
accountService.deleteById(id);
return "SUCCESS!";
}
@RequestMapping(value = "/update")
public String update(//
@RequestParam(value = "id") Integer id, //
@RequestParam(value = "name", required = true) String name, //
@RequestParam(value = "money", required = true) double money) {
Account account = accountService.findById(id);
account.setName(name);
account.setMoney(money);
accountService.update(account);
return "SUCCESS!";
}
@RequestMapping(value = "/add")
public String add(//
@RequestParam(value = "name", required = true) String name, //
@RequestParam(value = "money", required = true) double money) {
Account account = new Account();
account.setName(name);
account.setMoney(money);
accountService.add(account);
return "SUCCESS!";
}
}
AppBoot.java
@SpringBootApplication
public class AppBoot {
public static void main(String[] args) {
SpringApplication.run(AppBoot.class, args);
}
}
================= 分页查询 ===================
(1) pom.xml
<!-- pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
(2) application.properties
### Springboot分页插件
logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true
(3) 数据表[同上]
(4) Account.java [同上]
IAccountDao.java [同上]
AccountDaoImpl.java [同上]
IAccountService.java [同上]
AccountServiceImpl.java [同上]
AccountController.java
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<Account> findList() {
return accountService.findList();
}
@RequestMapping(value = "/pageList", method = RequestMethod.GET)
public List<Account> findPageList() {
// 分页处理
PageHelper.startPage(1, 4); // 1 表示第一页; 4 表示每页显示4条数据
List<Account> list = accountService.findList();
//取分页信息
PageInfo<Account> pageInfo = new PageInfo<Account>(list);
System.out.println(pageInfo.getTotal());
return list;
}

================== 最后总结: ===================
(1) pom.xml / application.properties / 数据表
Account.java
JdbcTemplate
JPA( @Entity / @Id, @GenereatedValue, @Column )
Mybatis
IAccountDao.java
JdbcTemplate(AccountDaoImpl.java / @Repository, jdbcTemplate)
JPA( IAccountDao extends JpaRepository<Account, Integer> () { } )
Mybatis( IAccountMapper.java / @Mapper, @Select/@Insert/@Update/@Delete(sql) )
(2) 注解总结:
@Component / @Repository / @Service / @Controller / @RestController
@ResponseBody / @RequestMapping
@PathVariable / @RequestParam / @RequestBody
@Configuration / @ComponentScan / @EnableAutoConfiguration / @SpringBootApplication
// JPA
@EntityScan / @EnableJpaRepository /
// Mybatis
@MapperScan
// JdbcTemplate
@SpringBootApplication // @Configuration + @ComponentScan(当前包) + @EnableAutoConfiguration(当前包)
// JPA
@EntityScan(basePackages = {"cn.mayi.springboot.jpa.entity"})
@EnableJpaRepositories(basePackages = {"cn.mayi.springboot.jpa.dao"})
//Mybatis
@MapperScan(basePackages = {"cn.mayi.springboot.mybatis.dao"})
public class AppBoot {
public static void main(String[] args) {
SpringApplication.run(AppBoot.class, args);
}
}

浙公网安备 33010602011771号