上手spring boot項目(三)之spring boot整合mybatis進行增刪改查

使用mybatis框架進行增刪改查大體有兩種基礎方式,一種擴展方式。兩種基礎方式分別是使用xml映射文件和使用方法註解。擴展方式是使用mybatis-plus的方式,其用法相似於spring-data-jpa。java

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就能夠掃描能實體類。mysql

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是接收的參數類型。web

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註解指定返回結果的數據類型,這裏就不細說了。spring

以上兩種方式各有利弊,使用配置文件編寫sql語句好處是耦合度低但過於麻煩,使用註解的方式相對於配置文件來講比較簡單,可是耦合度高。若是是簡單語句,建議是使用註解,若是是複雜語句,使用配置文件的方式。具體使用哪一種方式,能夠視實際狀況而定。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:springboot

public interface UserService  extends IService<SysUser> {


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

serviceImpl:mybatis

@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:app

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

雖然咱們在UserMapper中沒有定義任何方法,可是mybatisPlus集成了不少方法可供咱們使用。框架

執行後,打印的sql語句結果以下

相關文章
相關標籤/搜索