使用mybatis框架進行增刪改查大體有兩種基礎方式,一種擴展方式。兩種基礎方式分別是使用xml映射文件和使用方法註解。擴展方式是使用mybatis-plus的方式,其用法相似於spring-data-jpa。java
<!--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>
@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方法 }
#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的配置,若是出現錯誤的話,這樣容易找出錯誤緣由。
@Mapper public interface UserMapper { }
@EntityScan("cn.zhq.system.entity")//填寫 entity類所在包的位置。
加上這個註解後,springboot就能夠掃描能實體類。mysql
/** * 根據Name查詢用戶數據 * * @param username * @return */ SysUser findByName(String username);
<!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
/** * 更新用戶名 * @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
mybatis-plus相似於spring data jpa , 內置查詢,更新,刪除,插入語句,使咱們無需再寫那些簡單的sql語句。數據庫
<!-- Mybatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency>
# 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配置文件會報錯。
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語句結果以下