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>-->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!