做厂房的网站,自己可做以做网站吗,微信小程序开发公司十大排名,北京刚刚传来特大消息目录
一、JDBC操作回顾
二、什么是MyBatis#xff1f;
三、MyBatis入门
1、准备工作
#xff08;1#xff09;创建工程
#xff08;2#xff09;数据准备
2、配置数据库连接字符串
3、写持久层代码
4、单元测试
#xff08;1#xff09;使用IDEA自动成成测试类…目录
一、JDBC操作回顾
二、什么是MyBatis
三、MyBatis入门
1、准备工作
1创建工程
2数据准备
2、配置数据库连接字符串
3、写持久层代码
4、单元测试
1使用IDEA自动成成测试类
2使用程序运行代码编写controller类service类
四、常见问题错误
1、SQL错误
2、配置信息错误检查账户密码
3、未配置数据库
4、数据库不存在
5、表不存在
6、方法名重复 一、JDBC操作回顾 新增数据操作代码如下
public static void main(String[] args) throws SQLException {Scanner sc new Scanner(System.in);System.out.println(请输入id);int id sc.nextInt();System.out.println(请输入name);String name sc.next();//1、建立数据源DataSource dataSource new MysqlDataSource();((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java110?characterEncodingutf8useSSLfalse);((MysqlDataSource)dataSource).setUser(root);((MysqlDataSource)dataSource).setPassword(123456);//2、和数据库服务器建立连接Connection connection dataSource.getConnection();//3、构造sqlString sql insert into student values(?,?);//?作为占位符//预处理PreparedStatement statement connection.prepareStatement(sql);statement.setInt(1, id);statement.setString(2, name);//4、把构造好的sql发送的数据库服务器里执行int n statement.executeUpdate();System.out.println(n);//5、回收必要的资源statement.close();connection.close();} 之前博客的详细介绍Java的JDBC编程-CSDN博客 从上述代码和操作流程可以看出来对于JDBC来说整个操作都非常繁琐我们不但要拼接每一个参数而且还有按照模板代码的方式一步步的操作数据库并且每次操作完还要手动关闭连接等。所有的这些操作步骤都需要再每个方法中重复书写那有没有一种方法可以更简单、更方便操作数据库呢肯定有这也是我们要学习MyBatis的真正原因它可以帮助我们更方便、更快速的操作数据库。 二、什么是MyBatis 1、MyBatis是一块优秀的 持久层 框架用于简化JDBC的开发。 2、MyBatis本是Apache的一个开源项目iBatis2010年这个项目由Apache迁移到了google code并且改名为MyBaits。2013年11月迁移到Github。 3、官网MyBatis中文网 。 4、持久层指的就是持久化操作的层通常指数据访问层dao是用来操作数据库的。 简单来说MyBatis是更简单完成程序和数据库交互的框架也就是更简单的操作和读取数据库工具。 三、MyBatis入门 MyBatis操作数据库的步骤 1、准备工作创建Spring Boot工程、数据库表准备、实体类。 2、引入Mybatis的相关依赖配置Mybatis数据库连接信息。 3、编写SQL语句注解 / XML。 4、测试。 1、准备工作
1创建工程 创建Spring Boot 工程并且导入MyBatis的起步依赖、MySQL驱动包。 MyBatis是一个持久层框架具体的数据存储和数据操作还是在MySQL中操作的所以需要添加MySQL驱动。 项目工程创建完成后会自动在pom.xml文件中导入MyBatis依赖和MySQL驱动依赖如图 代码 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion3.0.3/version/dependency 它们的版本会随着SpringBoot版本发生变化SpringBoot 3.X 对应 MyBatis版本为 3.X对应关系参考mybatis-spring-boot-autoconfigure – Introduction 如图 2数据准备 创建用户表代码如下
-- 创建数据库
DROP DATABASE IF EXISTS mybatis_test;CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;-- 使用数据数据
USE mybatis_test;-- 创建表[用户表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE userinfo (id INT ( 11 ) NOT NULL AUTO_INCREMENT,username VARCHAR ( 127 ) NOT NULL,password VARCHAR ( 127 ) NOT NULL,age TINYINT ( 4 ) NOT NULL,gender TINYINT ( 4 ) DEFAULT 0 COMMENT 1-男 2-女 0-默认,phone VARCHAR ( 15 ) DEFAULT NULL,delete_flag TINYINT ( 4 ) DEFAULT 0 COMMENT 0-正常, 1-删除,create_time DATETIME DEFAULT now(),update_time DATETIME DEFAULT now(),PRIMARY KEY ( id )
) ENGINE INNODB DEFAULT CHARSET utf8mb4; -- 添加用户信息
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( admin, admin, 18, 1, 18612340001 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( zhangsan, zhangsan, 18, 1, 18612340002 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( lisi, lisi, 18, 1, 18612340003 );
INSERT INTO mybatis_test.userinfo ( username, password, age, gender, phone )
VALUES ( wangwu, wangwu, 18, 1, 18612340004 ); 创建对应的实体类代码如下
Data
public class UserInfo {private Integer id;private String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private Date createTime;private Date updateTime;
}
2、配置数据库连接字符串 MyBatis中要连接数据库需要数据库相关的参数配置MySQL驱动类、登录名、密码、数据库连接字符串。 application.yml文件配置内容如下
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8useSSLfalseusername: rootpassword: 1234driver-class-name: com.mysql.cj.jdbc.Driver
注意事项如果MySQL是 5.X 之前的使用的是 “com.mysql.jdbc.Driver”如果是大于5.X使用的是“com.mysql.cj.jdbc.Driver”。 application.properties文件配置内容如下
#驱动类名称
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.urljdbc:mysql://127.0.0.1:3306/mybatis_test?
characterEncodingutf8useSSLfalse
#连接数据库的⽤⼾名
spring.datasource.usernameroot
#连接数据库的密码
spring.datasource.password1234
3、写持久层代码 在项目中创建持久层接口UserInfoMapper如图 代码如下
import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;Mapper
public interface UserInfoMapper {Select(select * from userinfo)ListUserInfo getUserInfoAll();
} MyBatis的持久层接口规范一般都叫XxxMapper。Mapper注解表示是MyBatis中的Mapper接口。 程序运行时MyBatis框架会自动生成接口的实现类对象代理对象并交给Spring的IOC容器管理。 Select注解代表的就是select查询也就是注解对应方法的具体实现内容。
4、单元测试 在Spring Boot工程下中src下的test目录中已经自动帮我们创建好了测试类我们可以直接使用这个测试类来进行测试代码如下
import com.example.mybatisdemo.mapper.UserInfoMapper;
import com.example.mybatisdemo.model.UserInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;SpringBootTest
class MybatisDemoApplicationTests {Autowiredprivate UserInfoMapper userInfoMapper;Testvoid contextLoads() {ListUserInfo userInfos userInfoMapper.getUserInfoAll();System.out.println(userInfos);}} 测试类添加了注解SpringBootTest该测试类在运行时就会自动加载Spring的运行环境。我们通过Autowired这个注解注入我们要测试的类就可以开始进行测试了。 运行结果如下 返回对应的结果可以看到只有SQL语句中查询的列中只有和对应的列名一样才会有显示如果和数据库列名一样就会有显示对应的信息。如图 1使用IDEA自动成成测试类 在你要测试的类中鼠标右键 - Generate - Test - 勾上对应要测试的方法这里使用UserInfoMapper类做演示如图 点击OK会在test目录下生成对应的测试类如图 测试类代码如下
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;SpringBootTest
class UserInfoMapperTest {Autowiredprivate UserInfoMapper userInfoMapper;Testvoid getUserInfoAll() {System.out.println(userInfoMapper.getUserInfoAll());}
} 记得加SpringBootTest注解。 运行结果如下 2使用程序运行代码编写controller类service类 controller类代码如下
RequestMapping(/user)
RestController
public class UserController {Autowiredprivate UserService userService;RequestMapping(/getUserAll)public ListUserInfo getUserAll() {return userService.getUserAll();}
} service类代码如下
Service
public class UserService {Autowiredprivate UserInfoMapper userInfoMapper;public ListUserInfo getUserAll() {return userInfoMapper.getUserInfoAll();}
} 浏览器访问127.0.0.1:8080/user/getUserAll 结果如下 四、常见问题错误
1、SQL错误 如图下面from和userinfo连在一起没有空格分开。 双引号中多些一个空格都不行不然就会报错如图 2、配置信息错误检查账户密码 3、未配置数据库 把application.yml配置内容注释掉如图 测试用例报错如下创建dataSource失败了解决方案是检查配置 程序启动代码报错如下 如果配置内容格式不对如图 依然会报错上面这种错误。
4、数据库不存在 修改配置文件内容其中这个数据库是不存在的如图 运行测试类代码报错如下 5、表不存在 修改代码如下 运行测试类报错如下 6、方法名重复 UserInfoMapper类的方法名重复修改代码如下 运行测试类报错如下