mybatis简介
1. mybatis是一个优秀的java轻量级持久层框架
2. 内部封装了JDBC,开发人员只需关心sql语句,而不需要处理繁琐的JDBC步骤
3. 它采用了ORM思想,解决了实体和数据库映射的问题,只要提供好sql语句,配置了映射,Mybatis会自动根据参数值动态生成sql,执行sql的结果封装好返回给我们
4. 支持xml和注解两种方式配置映射
项目总体结构如下
创建工程
1. 使用Spring Initializr方式创建
2. 选择需要的依赖项目
3. 执行sql脚本
-- 创建数据库
CREATE DATABASE IF NOT EXISTS mybatis_test;
-- 使用创建的数据库
USE mybatis_test;
-- 删除之前存在的表
DROP TABLE IF EXISTS `user`;
-- 创建user表
CREATE TABLE `user` (
`id` int(11) PRIMARY KEY auto_increment,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
insert into `user`(`id`,`username`,`birthday`,`sex`,`address`) values
(41,'老王','2018-02-27 17:47:08','男','北极'),
(42,'小二王','2018-03-02 15:09:37','女','火星'),
(43,'小二王','2018-03-04 11:34:34','女','天王星'),
(45,'铁甲小宝','2018-03-04 12:04:06','男','冥王星'),
(46,'老王','2018-03-07 17:37:26','男','月球'),
(48,'小马宝莉','2018-03-08 11:44:00','女','空间站');
4. 编辑application.yml配置文件,添加mybatis的对应配置
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: mysql用户名
password: mysql密码
#配置mybatis的mapper映射文件位置
mybatis:
mapper-locations: classpath:mappers/*xml
5. 创建对应的实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
6.创建数据访问层接口
public interface UserDao {
/**
* 查询所有用户
* @return
*/
List<User> findAll();
}
7.在resources目录下创建mappers文件夹,创建对应的映射文件UserDao.xml
<?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">
<!--namespace:给哪个接口配置的映射,写接口的全限定类名-->
<mapper namespace="com.zhuang.dao.UserDao">
<!--
select标签:表示要执行查询语句;
id:给接口里哪个方法配置的,写方法名;
resultType:结果集封装类型
-->
<select id="findAll" resultType="com.zhuang.pojo.User">
select * from user
</select>
</mapper>
8.创建service层接口
public interface UserService {
/**
* 查询所有用户
* @return
*/
List<User> findAll();
}
8.创建UserService接口实现类UserServiceImpl.class
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
/**
* 查询所有用户
*
* @return
*/
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
8.创建controller层接口
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/api/v1/user/all")
public List<User> findAll() {
return userService.findAll();
}
}
9.修改启动类,添加@MapperScan注解
@SpringBootApplication
@MapperScan(basePackages = "com.zhuang.dao") //mapperScan用于扫描指定包下的所有接口,将接口的代理对象交给spring容器
public class SpringbootmybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootmybatisApplication.class, args);
}
}
9.启动项目,调用接口