Mybatis的实战介绍
02、Mybatis的实战介绍
1、创建一个springboot项目
创建demo如果不太懂,可以百度。
需要的依赖(有些依赖包和springboot的版本会出现冲突,如果解决不了,建议跟着教程走)
1 | <dependencies> |
2、配置mybatis
配置mybatis有两种方式:
- 一 、通过xml的方式配置Mybatis
在 /src/main/resource下创建Mybatis配置文件 mybatis-config.xml 和 映射文件目录mapper
在application.yml指定Mybatis配置文件、映射文件的位置可选:
mybatis.config-location:配置 mybatis-config.xml 路径mybatis-config.xml 中配置 MyBatis 基础属性
mybatis.mapper-locations:配置 Mapper 对应的 XML 文件路径
mybatis.type-aliases-package:配置项目中实体类包路径
application.yml
1 | mybatis: |
mybatis-config.xml
1 |
|
- 二、直接在yml或者properties配置数据库信息
1 | spring: |
3、编写业务实现类,测试Mybits
- mapper:MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
1 |
|
service
1
2
3
4
5
6
7
8
public interface UserService {
/**
* 添加用户信息
*/
int insertUser(UserEntity entity);
}impl
1
2
3
4
5
6
7
8
9
10public class UserServiceImpl implents UserService{
private UserMapper userMapper;
/**
* 添加用户信息
*/
public User getUserByIds(User user){
return userMapper.addUser(user);
}
}controller
1 |
|
编写xml
1
2
3
4
5
6
7
8
9
10
11
<mapper namespace="com.test.mybatis.mapper.UserMapper">
<!--int insertUser();-->
<insert id="addUser">
insert into t_user values(null,'张三','123',23,'女')
</insert>
</mapper>
4、postman测试
将参数补充完整,点击发送就可以了
5、Mybatis的简单sql语句介绍
1、添加
1 | <!--int insertUser();--> |
2、删除
1 | <!--int deleteUser();--> |
3、修改
1 | <!--int updateUser();--> |
4、查询一个实体类对象
1 | <!--User getUserById();--> |
5、查询集合
1 | <!--List<User> getUserList();--> |
注意:
1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系
resultType:自动映射,用于属性名和表中字段名一致的情况
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
2、当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常 TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值
6、MyBatis获取参数值的两种方式(重点)
MyBatis获取参数值的两种方式:${}和#{}
${}的本质就是字符串拼接,#{}的本质就是占位符赋值
${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引 号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
1、单个字面量类型的参数
若mapper接口中的方法参数为单个的字面量类型
此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引号
2、多个字面量类型的参数
若mapper接口中的方法参数为多个时
此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1…为键,以参数为值;以 param1,param2…为键,以参数为值;因此只需要通过${}和#{}访问map集合的键就可以获取相对应的 值,注意${}需要手动加单引号
3、map集合类型的参数
若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中
只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号
4、实体类类型的参数
若mapper接口中的方法参数为实体类对象时 此时可以使用${}和#{},通过访问实体类对象中的属性名获取属性值,注意${}需要手动加单引号
5、使用@Param标识参数
可以通过@Param注解标识mapper接口中的方法参数
此时,会将这些参数放在map集合中,以@Param注解的value属性值为键,以参数为值;以 param1,param2…为键,以参数为值;只需要通过${}和#{}访问map集合的键就可以获取相对应的值, 注意${}需要手动加单引号