zoukankan      html  css  js  c++  java
  • SpringBoot 集成MyBatis、事务管理

    集成MyBatis

    (1)在pom.xml中添加依赖

            <!-- mybatis的起步依赖。包含了mybatis、mybatis-spring、spring-jdbc(事务要用到)的坐标 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <!--这个必须要加版本号-->
                <version>2.1.1</version>
            </dependency>
            
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>

    (2)编写实体类,包名常用model、domain

    不需要在实体类上标@Component。

    (3)新建包com.chy.mapper,编写mapper接口。

    @Mapper
    public interface UserMapper{
        public User queryUserById(Integer id);
    }

     在接口上标注@Mapper,不用标注@Repository。

    (4)在resource下新建文件夹mapper,编写mybatis的映射文件

    <?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="com.chy.mapper.UserMapper">
        <select id="queryUserById" parameterType="Integer" resultType="user">
            select * from user_tb where id=#{id}
        </select>
    </mapper>

    注意namespace要和mapper接口对应。

    springboot的src/java下只放java源文件,配置文件、静态资源、映射文件都放到src/resources下。

    sql语句也可以直接写在mapper接口中:

    @Mapper
    public interface UserMapper{
        @Select("select * from user_tb where id=#{id}")
        public User queryUserById(@Param("id") Integer id);
    }

    @Param绑定占位符#{ }、${ }中的变量

    @Select、@Update、@Insert、@Delete 、@Mapper 都是mabatis的注解,在普通mybatis中也可以用

    只能写简单的sql语句,如果要使用resultmap映射结果集、关联映射等复杂一点的,还是需要xml映射文件。

    注解方式有点鸡肋,现在主流还是xml映射文件方式

    每次都需要在Mapper接口上标注@Mapper,很麻烦,可以直接在引导类上标注@MapperScan("com.chy.dao"),会自动把这个包下的接口都加上@Mapper注解。

    如果要扫描|添加多个包,写成String[ ],@MapperScan( { "包1" , "包2" } )。

    注意是@MapperScan,不是@MapperScans,末尾没有s。

    (5)编写service、controller

    在service中使用@Autowired注入Mapper时,会报红,实际上没问题。

    有强迫症不喜欢看红色的,可以将@Autowired换为@Resource。

    Spring官方推荐把@Autowired用来设值注入(写在方法上),不推荐把@Autowired用来字段注入(直接写在成员变量上)。

    (6)在springboot的配置文件中配置数据库、mybatis

    #配置数据源,此处使用jdbc数据源、mysql数据库
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT
    spring.datasource.username=chy
    spring.datasource.password=abcd
            
    #配置mybatis
    #配置实体类的别名
    mybatis.type-aliases-package=com.chy.model
    #指定映射文件的位置
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml

    注意:jdbc数据源、dbcp数据源、tomcat数据源使用的key是不同的。


    集成Spring的事务管理

    集成mybatis导入的依赖中已经包含了事务管理需要的依赖,所以不需要在pom.xml中再添加依赖,直接在service层要加事务的业务方法上标注@Transactional即可。

  • 相关阅读:
    开源ITIL管理软件iTop 2.5-2.6安装
    并发服务器
    套接字通信
    libevent
    gdb调试
    值得收藏的技术社区
    关于博客园随笔编辑页面内容不刷新(空白)的问题解决
    嵌入式Web框架
    内存地址的传递问题
    linux文件缓冲区
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12284972.html
Copyright © 2011-2022 走看看