Spring boot 整合 Mybatis 连接 Mysql

Spring boot 整合 Mybatis 连接 Mysql

第三篇博客,长话短说,用注解的方式使用Mybatis而不用配置Xml文件。

我用的是Spring boot 2.1.7
首先要导入两个Jar
1.spring-boot-starter-web,这个一般Spring boot web项目都有,没有的可自行使用Maven下载。
附上Maven:
提一下,不需要指定版本,因为 Spring boot 有约定各个Jar版本,我们无需再指定版本。
在Spring boot中: “ 约定优于配置 ” 。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.mysql-connector-java,这个是mysql连接驱动Jar。同样不需要指定版本。

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

application.properties 中配置如下:

mybatis.type-aliases-package=com.example.demo.UserSexEnum
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/student_test?serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = 123456

账号密码数据库地址和数据库名称根据实际的填。
mybatis.type-aliases-package=与数据库交互的实体类
是不是很抽象?
看下我的数据库结构:
在这描述
看下实体类:
在这里插入图片描述
下面写 Dao 层:
接口名:Mybatis(test嘛,随便取的)

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
 * 根据id查询
 *
 * @param idnum 需要查询的id
 * @return UserSexEnum实体
 */
@Select("SELECT * FROM student01 WHERE id =#{idnum}")
@Results({
    @Result(property = "id", column = "id", javaType = Integer.class),
    @Result(property = "name", column = "stu_name"),
    @Result(property = "idnum", column = "stu_idnum"),
    @Result(property = "age", column = "stu_age"),
    @Result(property = "height", column = "stu_height")
})
UserSexEnum getUser(Integer idnum);

/**
 * 查询整张表
 *
 * @return 所有条数据
 */
@Select("SELECT * FROM student01")
@Results({
    @Result(property = "id", column = "id", javaType = Integer.class),
    @Result(property = "name", column = "stu_name"),
    @Result(property = "idnum", column = "stu_idnum"),
    @Result(property = "age", column = "stu_age"),
    @Result(property = "height", column = "stu_height")
})
List<UserSexEnum> getAll();

/**
 * 插入数据
 *
 * @param user 入参实体,我这边设置的是id自增不用传,#{} 取的是实体类对应字段
 * @return 受影响行数
 */
@Insert("INSERT INTO student01(stu_name,stu_idnum,stu_age,stu_height) VALUES(#{name}, #{idnum}, #{age}, #{height})")
Integer insertV(UserSexEnum user);

/**
 * 更新数据
 *
 * @param productCategory 根据 实体类的id 更新对应的字段,我这边示例更新的是height
 * @return 受影响行数
 */
@Update("update student01 set stu_height = #{height} where id = #{id}")
Integer updateByObject(UserSexEnum productCategory);

/**
 * @param productCategory 根据 实体类的id 删除对应的行
 * @return 受影响行数
 */
@Delete("delete from student01 where id = #{id}")
Integer deleteByCategoryType(UserSexEnum productCategory);

Controller:


@Autowired
private Mybatis mybatis;

@GetMapping("/test/{id}")
public String test(@PathVariable("id") int idnum) {

  UserSexEnum sexEnum = mybatis.getUser(idnum);

  return sexEnum.toString();
}

@GetMapping("/test/all")
public String testall() {

  List<UserSexEnum> sexEnum = mybatis.getAll();

  StringBuilder stringBuffer = new StringBuilder();

  for (UserSexEnum user : sexEnum
  ) {
    stringBuffer.append(user);
  }

  return stringBuffer.toString();
}

@PostMapping("/test/insert")
public String insert(@RequestBody UserSexEnum sexEnum) {

  return "受影响的行数:" + mybatis.insertV(sexEnum);
}

@PostMapping("/test/delete")
public String delete(@RequestBody UserSexEnum sexEnum) {

  return "受影响的行数:" + mybatis.deleteByCategoryType(sexEnum);
}

@PostMapping("/test/updata")
public String updata(@RequestBody UserSexEnum sexEnum) {

  return "受影响的行数:" + mybatis.updateByObject(sexEnum);
}

再提一点:
@Autowired 接口会有一个警告,不影响运行。
在这里插入图片描述
可以自行关闭这个警告。
在这里插入图片描述
欢迎大家留言~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值