导入依赖
- 项目的解构
- pom文件 所依赖的mybatis 链接springBoot的包
<!--mybatis官方提供-->
<!-- -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
- 创建pojo实体类 与数据库对应
- mapper层 (创建了user查询dao的接口)
package com.kuang.w.mapper;
import com.kuang.w.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @ClassName : UserMapper //类名
* @Description : 这是一个mapper接口 //描述
* @Author : W //作者
* @Date: 2021/4/25 10:47
* @Mapper 这个注解表示这是一个mapper接口
* @Repository 表示这是dao层的注解
*/
@Mapper
@Repository
public interface UserMapper {
/**
* 1
* class queryUserList
* 查询
*
* @return List<User>
*/
List<User> queryUserList();
/**
* 2
* class queryUserById
* 根据ID查询
*
* @param id
* @return List<User>
*/
User queryUserById(Integer id);
/**
* 3
* class addUser
* 添加
*
* @param user
* @return int
*/
int addUser(User user);
/**
* 4
* class upDataUser
* 更新
*
* @param user
* @return int
*/
int upDataUser(User user);
/**
* class deleteUser
* 删除
*
* @param id
* @return int
*/
int deleteUser(Integer id);
}
- xml实现了了usermapper接口
<?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.kuang.w.mapper.UserMapper">
<!--开启缓存--> <!-- 在这里使用了二级缓存 实体类必须要实现序列化接口 implements Serializable -->
<cache/>
<select id="queryUserList" resultType="User">
select *
from mybatis.user
</select>
<select id="queryUserById" resultType="User">
select *
from mybatis.user
where id = #{id}
</select>
<insert id="addUser" parameterType="User">
insert into mybatis.user(id, name, password, tid)
VALUES (#{id}, #{name}, #{password}, #{tid})
</insert>
<update id="upDataUser" parameterType="User">
update mybatis.user
set name=#{name},
password=#{password}
where id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
delete
from mybatis.user
where id = #{id}
</delete>
</mapper>
- application.properties 配置文件
spring.datasource.username=root
spring.datasource.password=wj132199
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&useSSL=true&useUnicode=true&characterEncoding=UTF8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 别名 aliases
mybatis.type-aliases-package=com.kuang.w.pojo
# 整合mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
@Mapper与@MapperScan
在项目中大多数用的都是@MapperScan注解,指定basePackages,扫描mybatis Mapper接口类
另外一种方式是用@Mapper注解,其实这两种方法扫描配置用的是一个地方,只是扫描入口不同。从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(xxxxMapper.xml),用法也很简单:
**
* 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
*
* 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id
* 也就是说这个接口是不支持重载的
*/
@Mapper
public interface User {
@Select("select * from user where name = #{name}")
public User find(String name);
@Select("select * from user where name = #{name} and pwd = #{pwd}")
/**
* 对于多个参数来说,每个参数之前都要加上@Param注解,
* 要不然会找不到对应的参数进而报错
*/
public User login(@Param("name")String name, @Param("pwd")String pwd);
}
这种方式需要每个接口上面都加上这个注解,很麻烦,所以就出现了@MapperScan,@MapperScan只需要指定包名就行了,会自动扫描。