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

文章目录

  • 添加依赖
  • 配置MyBatis
  • 配置数据源
  • 编写dao
  • 配置sqlmapper.xml
  • 编写service以及serviceImpl
  • 编写Controller并集成swagger
  • swagger接口列表如下
    • 遇到的问题

添加依赖


        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>2.0.0version>
        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">
    

    <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框架_第1张图片

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

findAll接口
spring boot系列(三)整合MyBatis框架_第2张图片

findById接口:
spring boot系列(三)整合MyBatis框架_第3张图片

update接口
spring boot系列(三)整合MyBatis框架_第4张图片

spring boot系列(三)整合MyBatis框架_第5张图片

数据库更新前:

执行接口后


遇到的问题

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

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

spring boot系列(三)整合MyBatis框架_第7张图片

你可能感兴趣的:(spring,boot)