spring boot系列(三)整合MyBatis框架

  • 添加依赖

  • 配置MyBatis

  • 配置数据源

  • 编写dao

  • 配置sqlmapper.xml

  • 编写service以及serviceImpl

  • 编写Controller并集成swagger

  • swagger接口列表如下

    • 遇到的问题

  • swagger和spring boot属性注解


添加依赖

<!--添加mysql  mybatis 依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>

配置MyBatis

@Configuration
@MapperScan("com.example.springbootstartlearn.Dao")
public class MyBatisConfig {

@Autowired
private DataSource dataSource;

@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
// 扫描moudel
factoryBean.setTypeAliasesPackage("com.example.springbootstartlearn.Moudel");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factoryBean.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/*.xml"));

return factoryBean.getObject();
}
}

配置数据源

这次不再使用properties配置文件了,而是使用yml配置文件,配置如下

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.8:3306/studenms?useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&autoReconnect=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: sa

编写dao

model定义这里就不再写了,就是一个java类,按照数据库的字段进行定义,然后实现getter/setter方法和构造方法即可

@Repository("userDao")
public interface UserDao {

public List<UserMoudel> findAll();

public UserMoudel findById(int id);


public boolean update(UserMoudel moudel);
}

配置sqlmapper.xml

<mapper namespace="com.example.springbootstartlearn.Dao.UserDao">
<!-- sql映射 -->

<select id="findAll" resultType="com.example.springbootstartlearn.Moudel.UserMoudel" >
select * from t_user
</select>

<select id="findById" resultType="com.example.springbootstartlearn.Moudel.UserMoudel">
select * from t_user where id=#{id}
</select>

<update id="update" parameterType="com.example.springbootstartlearn.Dao.UserDao">
update t_user
<trim prefix="set" suffixOverrides=",">
<if test="user != null">user=#{user},</if>
<if test="role != null">role=#{role},</if>
<if test="name != null">name=#{name},</if>
<if test="email != null">email=#{email},</if>
<if test="password != null">password=#{password}</if>
</trim>
where id=#{id}
</update>
</mapper>

编写service以及serviceImpl

service

public interface IUserSvc {

public List<UserMoudel> findAll();

public UserMoudel findById(int id);


public boolean update(UserMoudel moudel);
}

serviceImpl

@Service("userSvc")
public class UserSvcImpl implements IUserSvc {

@Autowired
private UserDao dao;

@Override
public List<UserMoudel> findAll() {
return dao.findAll();
}

@Override
public UserMoudel findById(int id) {
return dao.findById(id);
}

@Override
public boolean update(UserMoudel moudel) {
return dao.update(moudel);
}
}

编写Controller并集成swagger

@Api("用户信息服务接口")
@RestController
@RequestMapping(value = "user")
public class UserController {

@Autowired
private UserSvcImpl userSvc;

@ApiOperation("获取全部用户信息")
@GetMapping(value = "/findAll")
@ResponseBody
public List<UserMoudel> findAll() {
return userSvc.findAll();
}

@ApiOperation(value = "根据用户Id查询用户信息")
@GetMapping(value = "/findById")
@ResponseBody
public UserMoudel findById(@RequestParam(value = "用户Id",required = true) int id){
return userSvc.findById(id);
}

@ApiOperation("更新用户信息")
@PutMapping("/update")
@ResponseBody
public boolean update(@RequestBody UserMoudel moudel){
return userSvc.update(moudel);
}
}

swagger接口列表如下

spring boot系列(三)整合MyBatis框架

每个接口的测试结果如下:

findAll接口

spring boot系列(三)整合MyBatis框架

findById接口:

spring boot系列(三)整合MyBatis框架

update接口

spring boot系列(三)整合MyBatis框架

spring boot系列(三)整合MyBatis框架

数据库更新前:

spring boot系列(三)整合MyBatis框架

执行接口后

spring boot系列(三)整合MyBatis框架


遇到的问题

  1. 初始化数据源失败,异常信息如下: spring boot系列(三)整合MyBatis框架

一般是数据源连接信息错误,或是驱动版本与数据库版本不一致所致


swagger和spring boot属性注解

@Api:用在类上,说明该类的作用
@ApiOperation:用在方法上,说明方法的作用
@ApiImplicitParams:用在方法上包含一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
paramType:参数放在哪个地方
header-->请求参数的获取:@RequestHeader
query-->请求参数的获取:@RequestParam
path(用于restful接口)-->请求参数的获取:@PathVariable
body(不常用)
form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传
value:参数的意思
defaultValue:参数的默认值
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数错误"
response:抛出异常的类
@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性



原文始发于微信公众号(程序员玄之):spring boot系列(三)整合MyBatis框架

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/43129.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!