
特点: 1.要求被代理者必须实现(有)接口. 代理对象时目标对象的实现类,目标元素 2.JDK代理是jdk默认提供的2.CGLIB动态代理
特点: 1.不管我们被代理者是否有接口,都可以为其创建代理对象.代理对象是目标对象的子类. 2.cglib需要手动的导包 3.spring为了创建代理对象方便,自身自动添加cglib依赖项Mapper接口
@Test
public void testFindDeptById(){
SqlSession sqlSession = sqlSessionFactory.openSession();
deptMapper deptMapper = sqlSession.getMapper(deptMapper.class);
System.out.println(deptMapper.getClass());
int id = 100;
List deptById = deptMapper.findDeptById(id);
System.out.println(deptById);
sqlSession.close();
}
2.三大框架的整合
2.1 框架的概述
2.1.1 Spring框架
Spring 为了团队开发将我们的复杂的框架 进行整合,使得程序从控制到调用浑然一体,以一种统一的方式进行调用.
核心:整合第三方框架
@RestController
public class UserController{
@Autowired
private UserService userService
}
说明:该框架主要的作用:主要用来接收用户的请求,之后完成业务的处理,最终返回响应给用户.
2.2框架之间的调用关系 2.3.1 编辑User的pojopackage com.jt.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class User implements Serializable {
private Integer id;
private String name;
private Integer age;
private String sex;
}
2.3.2 编辑Mapper接口
package com.jt.mapper;
import com.jt.pojo.User;
import java.util.List;
public interface UserMapper {
//查询demo_user表中的所有数据
List findAll();
}
2.3.3 编辑xml映射文件
2.3.4 编辑Service接口和实现类select * from demo_user;
1.编辑UserService接口
package com.jt.service;
import com.jt.pojo.User;
import java.util.List;
public interface UserService {
//查询User表中的所有数据
List findAll();
}
2.编辑ServiceImpl实现类
package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;//代理对象 jdk的动态代理
@Override
public List findAll() {
// List userList = userMapper.findAll();
return userMapper.findAll();
}
}
2.3.5 编辑Controller
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController//将该类交给Spring容器管理
public class UserController {
@Autowired
public UserService userService;
@RequestMapping("/getUser")
public List findUser(){
return userService.findAll();
}
}
2.4 编辑核心配置
url: jdbc:mysql://127.0.0.1:3306/jtdb?
1.serverTimezone=GMT%2B8指定时区 东八区
2.useUnicode=true&characterEncoding=utf8
开启使用Unicode编码,并且指定字符集utf-8
3.autoReconnect=true 断线是否重新连接
4.allowMultiQueries=true 是否允许批量操作
server:
port: 8090
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8
&useUnicode=true&characterEncoding=utf8
&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#SpringBoot整合mybatis
mybatis:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
2.5 Spring管理Mapper接口
2.5.1 报错说明
2.5.2 @Mapper和@MapperScan注解
1.@Mapper
2.@MapperScan 通过包扫描 简化配置信息
2.6.1 绑定异常
1.检查xml映射文件中的namespace
2.检查xml映射文件中Sql的ID
3.检查YML文件中xml映射文件的导入
检查YML文件是否定格,是否有层级缩进问题
4.检查@MapperScan(“com.jt.mapper”)
2.6.2 数据库链接异常
检查数据库链接地址/用户名/密码