整合mybatis

流程:

导入依赖:

除了mybaits还有mysql和jdbc依赖

<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>

配置数据源信息(两个选择),前者为jdbc数据源,后者为druid数据源

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/ssm_crud
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
---------------------------
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/ssm_crud
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

还要配置一些mybaits的基本配置,比如:

  • 别名配置
  • mapper的xml文件位置
  • 其他
mybatis.type-aliases-package=com.wang.pojo
# mybatis.mapper-locations=classpath:mapper/*.xml

写好pojo类,后面些数据访问层需要用

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
private Integer employeeId;
private String employeeName;
private String gender;
private String email;
private Department department;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
private Integer departmentId;
private String departmentName;
}

在dao包下写好mapper接口

@Mapper		//或者在主程序下添加@MapperScan("包位置")
@Repository
public interface EmployeeMapper { //查询全部员工
List<Employee> getAllEmployee(); //通过id查找员工
Employee getEmployeeById(Integer id); //添加员工
Integer addEmployee(Employee employee); //更新员工
Integer updateEmployee(Employee employee); //删除员工
Integer deleteEmployee(Integer id);
}

mapper接口对应的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">
<mapper namespace="com.wang.dao.DepartmentMapper">
<resultMap id="departmentMap" type="department">
<id column="department_id" property="departmentId"/>
<result column="department_name" property="departmentName"/>
</resultMap> <!--查询全部department-->
<!--List<Department> getAllDepartment();-->
<select id="getAllDepartment" resultMap="departmentMap">
select * from tbl_department
</select> <!--查询特定id的department-->
<!--Department getDepartmentById(Integer id);-->
<select id="getDepartmentById" resultMap="departmentMap">
select * from tbl_department where department_id = #{id}
</select>
</mapper>

测试使用:

@SpringBootTest
public class Test { @Autowired
DepartmentMapper departmentMapper; @org.junit.jupiter.api.Test
public void test(){
System.out.println(departmentMapper.selectByPrimaryKey(1));
}
}

多数据源开发:

怎么让springboot知道这个是一个mybatis下的mapper接口?

  • 在mapper上加上@Mapper

    @Mapper
    public interface UseMapper {
    }
  • 在主程序上加上@MapperScan("mapper接口放置的包")

    在这样spring就会直接去扫描这个包下的接口作为mapper

mapper接口需要放到IOC容器中去,故需要加上@Repository

测试数据库连接是否成功

@SpringBootTest
class DemoApplicationTests { @Autowired
DataSource dataSource; @Test
void contextLoads() throws SQLException {
System.out.println(dataSource.getConnection());
} }

常见错误:

1、用#{参数}查找时#和{参数}中间不要有空格

2、Invalid bound statement (not found): com.wang.dao.EmployeeDao.queryEmployee表示找不到Mapper对应的xml文件

3、@Repository注解在mapper接口上可有可无,但在一些地方会报错

springboot-5-持久层技术的更多相关文章

  1. SpringBoot整合持久层技术--(三)Spring Data JPA

    简介: JPA(java Persistence API)和SpringData是两个范畴的概念.spring data jpa是spring公司下的spring data项目的一个模块. sprin ...

  2. SpringBoot整合持久层技术--(一)JdbcTemplate

    简介: JdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术解决直接使用JDBC带来的重复代码问题.它没有MyBatis使用那么灵活,但是却比直接使用JDBC方便得多.Sp ...

  3. SpringBoot整合持久层技术--(二)MyBatis

    简介: 原名iBatis,SpringBoot中使用MyBatis: pom.xml <dependency> <groupId>org.springframework.boo ...

  4. SpringBoot整合持久层技术-创建项目

    新建项目 Pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...

  5. springboot整合持久层技术(mysql驱动问题)

    java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more tha ...

  6. 【Spring】对持久层技术的整合

    一.持久层技术 二.JdbcTemplate 开发步骤: 1. 导入相关的jar包 2. 配置连接池(数据源) 将参数设置到属性文件中: 3. 创建表 4. 编写实体类 5. Dao层实现 5.1 继 ...

  7. SpringBoot持久层技术

    一.Springboot整合mybatis maven中添加对数据库与mybatis的依赖 <dependencies> <dependency> <groupId> ...

  8. MyBatis持久层框架学习之01 MyBatis的起源和发展

    一.MyBatis的简介  MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...

  9. SpringBoot_整合视图层技术

    SpringBoot整合视图层技术 在目前的企业级应用开发中,前后端分离是趋势,但是视图层技术还占有一席之地.Spring Boot对视图层技术提供了很好的支持,官方推荐使用的模板引擎是Thymele ...

  10. 【Spring 持久层】Spring 与 Mybatis 整合

    持久层整合总述 1.Spring 框架为什么要与持久层技术进行整合? JavaEE开发需要持久层进行数据库的访问操作 JDBC.Hibernate.MyBatis 进行持久开发过程存在大量的代码冗余 ...

随机推荐

  1. 77GHz 和24GHz Radar性能解析

    77GHz 和24GHz Radar性能解析 一.77GHz MRR 77GHz MRR Automotive Collision Warning Radar Application MRR – Fo ...

  2. BIO/NIO/ANO笔记

    一: netty服务器启动过程 serverBootstrap.bind(hostname, port)---> doBind(localAddress);--> 1.1: initAnd ...

  3. Minecraft类游戏地形生成机制

    目录 前言 生成地形高度 生成生物群落 模拟雨水侵蚀.生成河流(未完) 生成洞穴.裂谷 生成植被 放置树木(Bezier曲线) 生成建筑 生成发展域(元胞自动机模型) 放置建筑(DFS) 连接道路(A ...

  4. 【NX二次开发】 获取产品曲面上多个点对应的面的垂直矢量!

    说明:选择一个产品面,选择面上的点,生成点在此面上的法线反向,生成直线.生成矢量的起点坐标,和矢量方向信息.可用于三坐标测量,如果需要可以自己编个插件用! 效果图: 源码: //----------- ...

  5. 配置IPv6公网地址DDNS并开放外网访问端口

    目前使用三大运营商宽带服务都会下发公网IPv6地址,这样我们想要在外网访问家里的路由.NAS等设备就可以直接通过IPv6地址来访问了.但是每次重新拨号后IPv6地址都会改变,而且IPv6的地址很长,这 ...

  6. 1.5w字 + 24张图肝翻 TCP。

    TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...

  7. 干货 | LuatOS BSP移植教程,简单到复制粘贴!!!

    LuatOS本着自身的开源特性,可以很轻松的嵌入到很多微处理器和微控制器.今天简要讲下如何移植这套系统,上手比较简单,看完基本就会了. 要想做移植,就要先了解需要移植芯片的SDK,LuatOS依赖于F ...

  8. Linux集群环境下NTP服务器时间同步

    NTP介绍 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC(Universal Time ...

  9. Scala语言笔记 - 第二篇

    目录 1 Map的基础操作 2 Map生成view和transform解析 ​ 最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程(Function Programming)能力,记录 ...

  10. 利用ServletContext,实现Session动态权限变更

    1.前言 很多Spring Boot应用使用了Session作为缓存,一般会在用户登录后保存用户的关键信息,如: 用户ID. 用户名. 用户token. 权限角色集合. 等等... 在管理员修改了用户 ...