1、添加pom依赖: mybatis-spring-boot-starter

2、添加配置: mybatis*

3、添加mysql客户端、druid连接池依赖

首先查看bybatis的配置信息:点击打开链接,在其中找到依赖信息:

4 集成mybatis

把依赖信息添加到 pom.xml中。

然后可以找到配置信息:

4 集成mybatis

将配置信息添加到 application.properties配置文件中。

然后新建包 com.mydre.miaosha.domain  , 这个包中存放与数据库中的表相对应的对象,再修改applicatin.properties文件,如下。

4 集成mybatis

但是,还没有配置数据源,下面进行配置。

# druid
spring.datasource.url=jdbc:mysql://localhost:3306/miaosha?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.filter=stat
spring.datasource.maxActive=2
spring.datasource.initialSize=1
spring.datasource.maxWait=60000
spring.datasource.minldle=1
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=select'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements=20

但是,还没有引入jdbc和druid的jar包(依赖),下面进行引入(向配置文件pom.xml中添加依赖)。

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

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.0.5</version>

</dependency>

然后,创建数据库,取名为miaosha,使用utf8mb4编码,在库中新建表user,如下图

4 集成mybatis

有了表,就应该有和表对应的domain对象,

4 集成mybatis

有了domain对象,就需要有interface,在 com.mydre.miaosha.dao包下创建接口 UserDao。

4 集成mybatis

package com.mydre.miaosha.dao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.mydre.miaosha.domain.User;
@Mapper
public interface UserDao {
@Select("select * from user where id = #{id}")
public User getById(@Param("id")int id);

}

dao写好了,下一步写service,在com.mydre.miaosha.service包下新建类 UserService,填入如下代码。

package com.mydre.miaosha.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mydre.miaosha.dao.UserDao;
import com.mydre.miaosha.domain.User;
@Service
public class UserService {
@Autowired
UserDao userDao;
public User getById(int id){
return userDao.getById(id);
}
}

然后,需要在controller中使用UserService。在DemoController.java中添加如下代码:

@Autowired
UserService userService;
@RequestMapping("/db/get")
@ResponseBody
public Result<User> dbGet(){
User user = userService.getById(1);
return Result.success(user);

}

然后,向user表中插入一条数据:

4 集成mybatis

然后,run as application,但是,报错了,报错如下:

Binding to target o[email protected]1232c7c failed:


    Property: spring.datasource.type
    Value: com.ailbaba.druid.pool.DruidDataSource

    Reason: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'type'; nested exception is java.lang.IllegalArgumentException: Cannot find class [com.ailbaba.druid.pool.DruidDataSource]

注意,我这个单词写错了,我把前面的改过来了,改为alibaba(阿里巴巴)。然后经过若干分钟,又修改了 其它的错误(粉红色字体加粗的部分)。

之后,run as Java Application,在浏览器中访问 http://localhost:8080/demo/db/get   如下图所示:

4 集成mybatis

这回没有异常了。

然后可以测试一下事务。事务可以回滚。如:插入两条数据,一条主键为2,另一条主键为1(该主键在数据库中已经存在)。

UserDao类中加入:

@Insert("insert into user(id, name) values(#{id}, #{name})")

public void insert(User user);

UserService中定义函数:

@Transactional
public boolean tx() {
User user1 = new User();
user1.setName("xiaoming");
user1.setId(2);
userDao.insert(user1);

User user2 = new User();
user2.setId(1);
user2.setName("mingming");
userDao.insert(user2);

return true;

}

DemoController类中进行调用:

@RequestMapping("/db/tx")
@ResponseBody
public Result<Boolean> dbTx(){
userService.tx();
return Result.success(true);

}

在浏览器中进行访问:

4 集成mybatis

再查看数据库中:一条数据也没有新增,说明事务进行了回滚。

如果把@Transactional注释掉,则事务不会进行回滚(即第一条数据插入成功,第二条数据插入失败)。

4 集成mybatis

相关文章:

  • 2021-09-05
  • 2021-07-24
  • 2021-08-19
  • 2021-07-21
猜你喜欢
  • 2021-11-05
  • 2022-12-23
  • 2021-08-12
  • 2021-11-02
  • 2021-12-26
  • 2021-08-18
相关资源
相似解决方案