springboot-5-持久层技术
整合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-持久层技术的更多相关文章
- SpringBoot整合持久层技术--(三)Spring Data JPA
简介: JPA(java Persistence API)和SpringData是两个范畴的概念.spring data jpa是spring公司下的spring data项目的一个模块. sprin ...
- SpringBoot整合持久层技术--(一)JdbcTemplate
简介: JdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术解决直接使用JDBC带来的重复代码问题.它没有MyBatis使用那么灵活,但是却比直接使用JDBC方便得多.Sp ...
- SpringBoot整合持久层技术--(二)MyBatis
简介: 原名iBatis,SpringBoot中使用MyBatis: pom.xml <dependency> <groupId>org.springframework.boo ...
- SpringBoot整合持久层技术-创建项目
新建项目 Pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- springboot整合持久层技术(mysql驱动问题)
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- 【Spring】对持久层技术的整合
一.持久层技术 二.JdbcTemplate 开发步骤: 1. 导入相关的jar包 2. 配置连接池(数据源) 将参数设置到属性文件中: 3. 创建表 4. 编写实体类 5. Dao层实现 5.1 继 ...
- SpringBoot持久层技术
一.Springboot整合mybatis maven中添加对数据库与mybatis的依赖 <dependencies> <dependency> <groupId> ...
- MyBatis持久层框架学习之01 MyBatis的起源和发展
一.MyBatis的简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyB ...
- SpringBoot_整合视图层技术
SpringBoot整合视图层技术 在目前的企业级应用开发中,前后端分离是趋势,但是视图层技术还占有一席之地.Spring Boot对视图层技术提供了很好的支持,官方推荐使用的模板引擎是Thymele ...
- 【Spring 持久层】Spring 与 Mybatis 整合
持久层整合总述 1.Spring 框架为什么要与持久层技术进行整合? JavaEE开发需要持久层进行数据库的访问操作 JDBC.Hibernate.MyBatis 进行持久开发过程存在大量的代码冗余 ...
随机推荐
- RGB Color Codes Chart
RGB Color Codes Chart RGB颜色空间 RGB颜色空间或RGB颜色系统,从红色.绿色和蓝色的组合中构造所有颜色. 红色.绿色和蓝色各使用8位,它们的整数值从0到255.这使得256 ...
- 尚硅谷Java——宋红康笔记【day11-day18】
day11 Eclipse中的快捷键: * 1.补全代码的声明:alt + / * 2.快速修复: ctrl + 1 * 3.批量导包:ctrl + shift + o * 4.使用单行注释:ctrl ...
- SpringBoot基础系列之自定义配置源使用姿势实例演示
[SpringBoot基础系列]自定义配置源的使用姿势介绍 前面一篇博文介绍了一个@Value的一些知识点,其中提了一个点,@Value对应的配置,除了是配置文件中之外,可以从其他的数据源中获取么,如 ...
- <题解>幻想乡战略游戏
洛谷题目 看到题面,很容易就想到,这是要你找树上的重心,只不过这个重心是在带边权的树上 所以对于这个我们在树上找这个重心 一开始我想的是,我要更新权值,然后把每个点的答案更新一下 就取最大值,这好像是 ...
- P1123 取数游戏
题目描述 一个N \times MN×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻88个格子中的一个即认为这两个数字相邻),求取 ...
- Centos acme.sh 申请 LetsEncrypt 通配证书
1. 安装 acme.sh 注意:如果需要使用 Standalone Mode请先安装socat# yum intall socat It is recommended to install soca ...
- 【NX二次开发】多功能对话框UF_UI_message_dialog
多功能对话框 1 extern DllExport void ufsta(char *param, int *returnCode, int rlen) 2 { 3 UF_initialize(); ...
- QueryTable的使用以及错误
1.QuerySeter的filter使用遇到的错误 1.1 Filter里的字段名和操作符要用双下划线."__" 不是" _",否则会被认为成是列名的一部分, ...
- noip模拟6[辣鸡·模板·大佬·宝藏]
这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...
- docker4-docker网络,容器编排,集群部署
1,docker网络 1.1,docker0 有三个网络环境,那么docker是如何处理容器网络访问的? 1.2,测试 docker run -d -p 80:8080 --name tomcat01 ...