上手spring boot專案(三)之spring boot整合mybatis進行增刪改查
阿新 • • 發佈:2019-12-16
使用mybatis框架進行增刪改查大致有兩種基礎方式,一種擴充套件方式。兩種基礎方式分別是使用xml對映檔案和使用方法註解。擴充套件方式是使用mybatis-plus的方式,其用法類似於spring-data-jpa。
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語句結果如下