上手spring boot项目之spring boot整合mybatis进行增删改查的三种方式。

Posted code-handling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上手spring boot项目之spring boot整合mybatis进行增删改查的三种方式。相关的知识,希望对你有一定的参考价值。

1.引入依赖

<!--springboot的web起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Mybatis起步依赖 -->
<dependency>
       <groupId>org.mybatis.spring.boot</groupId>
       <artifactId>mybatis-spring-boot-starter</artifactId>
       <version>2.1.0</version>
</dependency>    
<!-- mysql连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

2.entity实体类

@TableName(value = "tb_user")//使用mybatis-plus时需要添加,与数据库中的表建立关系
public class SysUser implements Serializable {

    @TableId(type = IdType.AUTO)//使用mybatis-plus时需要添加,主键生成策略
    private Long id;

    private String username;


    private String password;

    private String salt;
    private String avatar;
    private String introduce;
    private String remark;
    //省略get,set方法
}

3.创建application.properties配置文件

#DB Configuration数据库信息:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.zaxxer.hikari.HikariDataSource

#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=cn.zhq.system.entity
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

# 打印sql
#打印sql到控制台
logging.level.cn.zhq.system.mapper=debug
mybatis.type-aliases-package是实体所在包的位置,mybatis.mapper-locations是配置文件所在的位置。初次使用的时候最好加上打印sql的配置,如果出现错误的话,这样容易找出错误原因。

4.创建UserMapper类

@Mapper
public interface UserMapper {

}

5.在spring boot的application加上注解

@EntityScan("cn.zhq.system.entity")//填写 entity类所在包的位置。

加上这个注解后,springboot就可以扫描能实体类。

6.进行增删改查

6.1 使用mapper.xml进行增删改查

6.1.1 编写UserMapper类中的方法

    /**
     * 根据Name查询用户数据
     *
     * @param username
     * @return
     */
    SysUser findByName(String username);

6.1.2  在resources的mapper目录下创建UserMapper.xml配置文件

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.zhq.system.mapper.UserMapper">
    <select id="findByName" resultType="sysuser" parameterType="String">
      select * from tb_user where username = #{username}
    </select>
</mapper>

使用select标签执行查询语句,使用update标签进行 增,删,改操作。其中 id是UserMapper类中方法的名称,resultType是返回值的类型,parameterType是接收的参数类型。

6.2 使用注解进行增删改查

    /**
     * 更新用户名
     * @param username
     */
    @Update("update tb_user set username= #{username} where id = #{id}")
    void updateByAvatar(String username,Long id);

使用@Update注解后,就无需再编写UserMapper配置文件了,同理@Updae可以进行增删改操作。此外使用@Select进行查询。当进行一对多,多对多关系的查询时,还可以使用@Results注解指定返回结果的数据类型,这里就不细说了。

以上两种方式各有利弊,使用配置文件编写sql语句好处是耦合度低但过于麻烦,使用注解的方式相对于配置文件来说比较简单,但是耦合度高。如果是简单语句,建议是使用注解,如果是复杂语句,使用配置文件的方式。具体使用哪种方式,可以视实际情况而定。

6.3 使用mybatis-plus进行增删改查

mybatis-plus类似于spring data jpa , 内置查询,更新,删除,插入语句,使我们无需再写那些简单的sql语句。

6.3.1 引入依赖

 <!-- Mybatis Plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

6.3.2 application.yml配置文件

# mybatis-plus
mybatis-plus:
  type-aliases-package: cn.zhq.system.entity
  mapper-locations: classpath:mapper/*.xml
  configuration:
    jdbc-type-for-null: null
  global-config:
    banner: false
type-aliases-package填写Entity实体类所在包的位置。mapper-locations:填写映射文件所在的位置,如果不写的话,在你的resources下的mapper配置文件会报错。

6.3.3 相关service,serviceImpl,mapper类

service:

public interface UserService  extends IService<SysUser> {


    /**
     * 更新
     *
     * @param sysUser
     */
    void update(SysUser sysUser);
}

serviceImpl:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, SysUser> implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    @Transactional
    public void update(SysUser sysUser) {
        userMapper.updateById(sysUser);
    }
}

mapper:

@Mapper
public interface UserMapper extends BaseMapper<SysUser> {
}

虽然我们在UserMapper中没有定义任何方法,但是mybatisPlus集成了很多方法可供我们使用。

执行后,打印的sql语句结果如下

技术图片

以上是关于上手spring boot项目之spring boot整合mybatis进行增删改查的三种方式。的主要内容,如果未能解决你的问题,请参考以下文章

上手spring boot项目之spring boot整合mybatis进行增删改查的三种方式。

上手spring boot项目之springboot如何返回json数据

关于spring boot上手的一点介绍

Spring Boot 成长之路 快速上手

5分钟快速上手Spring Boot

自定义spring-boot-autocofigure使用maven打包的时候报错了:Failed to execute goal org.springframework.boot:spring-bo