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>-->