SpringBoot-15-之整合MyBatis+分页
2018-08-17 本文已影响18人
e4e52c116681
0.相关配置
pom.xml
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 为简化set,get,toString代码引入lombok -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/zoom?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
使用的表
sword.png1.剑的实体类:com.toly1994.toly_mybatis.entity.Sword
/**
* 作者:张风捷特烈
* 时间:2018/8/17 0017:8:23
* 邮箱:1981462002@qq.com
* 说明:剑的实体类
*/
@Data//=@Getter +@Setter
public class Sword {
private Integer id;
private String name;
private Integer atk;
private Integer hit;
private Integer crit;
private Integer attr_id;
private Integer type_id;
}
2.剑的数据映射类:com.toly1994.toly_mybatis.mapper.SwordMapper
/**
* 作者:张风捷特烈
* 时间:2018/8/17 0017:8:41
* 邮箱:1981462002@qq.com
* 说明:剑的数据映射类
*/
public interface SwordMapper {
/**
* 查询
*
* @param name
* @return
*/
@Select("SELECT*FROM sword WHERE NAME=#{name}")
Sword findByName(@Param("name") String name);
/**
* 添加
*
* @param name
* @param atk
* @param hit
* @param crit
* @param attr_id
* @param type_id
* @return
*/
@Select("INSERT sword VALUES(DEFAULT,#{name},#{atk},#{hit},#{crit},#{attr_id},#{type_id})")
void insert(@Param("name") String name,
@Param("atk") Integer atk,
@Param("hit") Integer hit,
@Param("crit") Integer crit,
@Param("attr_id") Integer attr_id,
@Param("type_id") Integer type_id
);
}
3.服务层:com.toly1994.toly_mybatis.service.SwordService
/**
* 作者:张风捷特烈
* 时间:2018/8/17 0017:8:48
* 邮箱:1981462002@qq.com
* 说明:服务层
*/
@Service//坑点1别忘加Service注解
public class SwordService {
@Autowired
private SwordMapper mSwordMapper;
public void insertSword(String name, Integer atk,
Integer hit,
Integer crit,
Integer attr_id,
Integer type_id) {
mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
}
public Sword findByName(String name) {
return mSwordMapper.findByName(name);
}
}
4.剑的控制层:com.toly1994.toly_mybatis.controller.SwordController
/**
* 作者:张风捷特烈
* 时间:2018/8/17 0017:8:55
* 邮箱:1981462002@qq.com
* 说明:剑的控制层
*/
@RestController
public class SwordController {
@Autowired
private SwordService mSwordService;
@GetMapping("/insert")
public String insertSword(String name, Integer atk,
Integer hit,
Integer crit,
Integer attr_id,
Integer type_id) {
mSwordService.insertSword(name, atk, hit, crit, attr_id, type_id);
return "OK";
}
@GetMapping("/findByName")
public Sword findByName(String name) {
return mSwordService.findByName(name);
}
}
5.启动类:com.toly1994.toly_mybatis.TolyMybatisApplication
@SpringBootApplication
//坑点2,别忘了扫包
@MapperScan(basePackages = {"com.toly1994.toly_mybatis.mapper"})
public class TolyMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(TolyMybatisApplication.class, args);
}
}
6.结果
插入接口:
http://localhost:8080/insert?name=赤凰&atk=3000&hit=100&crit=5&attr_id=1&type_id=2
查询接口:
http://localhost:8080/findByName?name=赤凰
mybatis测试.png
7.事务
故意造异常:com.toly1994.toly_mybatis.service.SwordService#insertSword
public void insertSword(String name, Integer atk,
Integer hit,
Integer crit,
Integer attr_id,
Integer type_id) {
mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
int i = 1 / atk;//异常处
}
http://localhost:8080/insert?name=赤凰&atk=0&hit=100&crit=5&attr_id=1&type_id=2
no_transactional.png
使用事务:com.toly1994.toly_mybatis.service.SwordService#insertSword
@Transactional
public void insertSword(String name, Integer atk,
Integer hit,
Integer crit,
Integer attr_id,
Integer type_id) {
mSwordMapper.insert(name, atk, hit, crit, attr_id, type_id);
int i = 1 / atk;
}
Transactional.png
8.分页
8-1:pom.xml
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
8-2:application.yml
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count==countSql
page-size-zero: true
8-3:com.toly1994.toly_mybatis.mapper.SwordMapper
/**
* 查询所有
*
* @return
*/
@Select("SELECT*FROM sword")
List<Sword> findALL();
8-4:com.toly1994.toly_mybatis.service.SwordService
/**
* 分页查询
* @param page 当前页数
* @param pageSize 每页个数
* @return
*/
public PageInfo<Sword> findAll(int page,int pageSize) {
PageHelper.startPage(page, pageSize);//改写语句实现分页查询
List<Sword> all = mSwordMapper.findALL();
PageInfo<Sword> info = new PageInfo<>(all);
return info;
}
8-5:com.toly1994.toly_mybatis.controller.SwordController
//http://localhost:8080/findAllByPage?page=1&pageSize=3
@GetMapping("/findAllByPage")
public PageInfo<Sword> findAll(int page, int pageSize) {
return mSwordService.findAll(page, pageSize);
}