springboot使用Mybatis

1、导入依赖并配置文件

  <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.2.2</version>
  </dependency>
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
  </dependency>
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    username: root
    password: root

2、实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private Integer id;

    private String name;

    private String sex;

    private String age;

    private static final long serialVersionUID = 1L;
}

3、dao层

//注册bean有两种方式
//要么在这里使用@Mapper,要么在Application类中使用@MapperScan(basePackages = {"cn.laoyao.mapper"})

//@Mapper
public interface UserMapper {
    /**
     * 根据name查找user
     */
    User selectByName(String name);
}

4、mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.laoyao.mapper.UserMapper">

  <resultMap id="BaseResultMap" type="cn.laoyao.pojo.User">
    <!--@mbg.generated-->
    <!--@Table test.user-->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="sex" jdbcType="CHAR" property="sex" />
    <result column="age" jdbcType="VARCHAR" property="age" />
  </resultMap>

  <select id="selectByName" resultMap="BaseResultMap">
    select *
    from test.user
    where name=#{name}
  </select>
</mapper>

5、service和controller省略。。。

6、主类

@SpringBootApplication
@MapperScan(basePackages = {"cn.laoyao.mapper"})
public class Springboot10MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot10MybatisApplication.class, args);
    }

}

使用事务

SpringBoot中使用事务:

1)在业务方法的上面加入@Transactional , 加入注解后,方法有事务功能了。

2)明确的在 主启动类的上面 ,加入@EnableTransactionManager

例子:

/**
 * @Transactional: 表示方法的有事务支持
 *       默认:使用库的隔离级别, REQUIRED 传播行为; 超时时间  -1
 *       抛出运行时异常,回滚事务
 */
@Transactional
@Override
public int addStudent(Student student) {
    System.out.println("业务方法addStudent");
    int rows  =  studentDao.insert(student);
    System.out.println("执行sql语句");

    //抛出一个运行时异常, 目的是回滚事务
    //int m   = 10 / 0 ;

    return rows;
}

注意:

​ 在pom中,默认的mysql-connector-java是8.0+的,如果数据库版本不匹配,则会报错

<dependency>-->
    <groupId>mysql</groupId>-->
    <artifactId>mysql-connector-java</artifactId>-->
    <scope>runtime</scope>-->
</dependency>-->
posted @ 2022-08-09 18:35  z-laoyao  阅读(154)  评论(0编辑  收藏  举报