开发者学堂课程【SpringBoot 实战教程: SpringBoot 整合 Mybatis(注解方式)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10800
SpringBoot 整合 Mybatis(注解方式)
1、在 springboot 中利用注解的方式整合 mybatis,首先需要依赖 jar 包,依赖 mybatis 包和 mysql 包,不用连接池,直接依赖它们两个。
2、创建好一个工程,跟 web 进行整合,写好启动类,mybatis 包和 mysql 包依赖好之后,配置连接数据库的信息。
<!--springboot 整合 mybatis,注解版-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3、创建全局配置文件,命名为 application.properties。properties 和 yml 两个都需要会用。使用 db1数据库为例。
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/db1
4、准备好后,以用户表为例,在逆向工程中已经生成了 pojo,准备实体类,用注解的方式,不需要 example,把它删掉。只需要留下实体类即可,对应的是用户表,创建一个包,命名为 com.db1.mapper。
5、mapper 用的是注解的方式,不需要逆向工程中生成的 mapper。以注解方式如何实现?
6、在 UsersMapper.java 中创建一个接口,写一个功能,根据姓名查找用户,为什么不需要 xml 配置文件?在接口中对应的功能上直接写 sql 语句,根据姓名查询用户对应的 sql 语句,在定义接口的同时就把功能对应的 sql 语句写好了。name 值如何获取?相当于输入参数,用 param 注解解决。
package com. db1. mapper ;
import org. apache. ibatis . annotations.
param;
import org . apache . ibatis . annotations . Select;
import com.db1 ·pojo.Users;
public interface User sMapper
{
@Select ("select * from users
where name=#
{
name
}
")
Users findUserByName (@Param("name") String name) ;
}
这就是用注解的方式整合 mybatis,不需要 mapper.xml 配置文件。这个是查找,再输入添加用户。只指定 name 和 password,对应添加的 sql 语句,输入 insert
注解,进行导入,只给 name 和 password 指定值,values 里面需要写两个单位符,输入 name 和 password 两个字段,方法和对应的 sql 语句写在一起即可。
@Insert ("insert into
users (name, password)
values(#
{
name
}
, #
{
password
}
)
“
)
void addUser (@Param ("name") String name, @Param ("password") String password) ;
}
7、需要生成 mapper 的代理对象,扫描 mapper 即可。创建 interface,命名为 usersservice。
8、写接口,对应两个功能,一个是查找用户,一个是添加用户。
package com. qianfeng. service;
import com.db1 .pojo. Users;
public interface UsersService {
Users findUser (String name) ;
void saveUser (Users) ;
}
9、创建 class,命名为 UsersServicelmpl。
10、首先加入注解,Service 里面要使用 usersmapper,进行注入,
@Service
public class UsersServiceImpl implements UsersService
{
@Autowired
private UsersMapper usersMapper;
@Override
public Users findUser (String
name)
{
return usersMapper . findUserByName (name) ;
返回的查询出的对象
}
@Override
public void
saveUser (Users user)
{
保存
usersMapper.addUser(user.getName(), user .getPassword() ) ;
}
11、创建,命名为 userscontroller。
import org. spr ingframework . beans . factory . annotation. Autowired;
import org . springframework. stereotype . Controller;
Import
com. qianfeng. service . UsersService;
@
rest
Controller
public class UsersController
{
@Autowired
Private
UsersService usersService ;
@RequestMapping("/ findUser")
指定对象
//@ResponseBody
返回用户对象阶层数据即可
public Users findUser (String name )
查询对象,以阶层格式返回即可,需要传递名字
{
return usersService. findUser (name) ;
}
@RequestMapping ("/addUser")
//@ResponseBody
public String addUser ()
{
Users
user
=
ne
w
Users () ;
创建 users 对象
user . setName ("王小二") ;
user . set Password("9999") ;
usersService . saveUser (user) ;
return"ok";
}
12、service 和 controller 都要被扫描,mapper 也要扫描,在启动类中加上扫描,它会扫描它的子包,mapper 要用单独的一个注解 mapperscan。
@SpringBootApplication(scanBasePackages="com. qianfeng")
@MapperScan ("com. db1. mapper")
13、启动,访问查找用户,查找用户需要给它传递 name,输入localhost:8080/findUser?name=/小红
,回车。可以看到返回的阶层数据。
14、添加功能,添加王小二,返回的是 users,输入localhost:8080/addUser
,报错。
15、控制台提示 sql 语句表名写错,应该是 users。字串是 name 和 password,重新启动。在表里面可以看到王小二9999添加进来。
这就是 springboot 如何用注解的方式整合 mybatis。