建设银行怎么加入信用网站/淘宝指数转换
目录
1、Mybatis是什么?
持久层什么意思?
什么是自定义SQL?
什么是存储过程?
什么是高级映射?
2、配置MyBatis开发环境
2.1、创建数据库和表
2.2、添加MyBatis框架支持
2.3、配置连接字符串和MyBatis
2.3.1、配置连接字符串
2.3.2、配置MyBatis中的XML路径
3、SSM第一个业务代码案例
3.1、添加实体类
3.2、添加Mapper接口
3.3、添加UserMapper.xml
3.4、添加Service
3.5、添加Controller
3.6、代码测试
1、Mybatis是什么?
MyBatis是一款持久层框架,它支持自定义SQL、存储过程和高级映射。MyBatista去除了几乎所有的的JDBC代码以及设置参数和获取结果集的工作。MyBatis通过简单的xml或者注解【几乎不用】来配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录
持久层什么意思?
我们将层字去掉,持久,也就是说持续(保存)时间久,他针对的是系统中数据存在的时限。在内存中存储数据是不持久的,如果计算机崩溃或者某原因导致计算机关机,数据就会丢失,但是磁盘上的数据是持久的,因此,用在持久层也就是这个框架是用来将内存中的数据写入到磁盘中,具体一点就是写入数据库。
什么是自定义SQL?
就是咱们在控制台输入的SQL语句,例如:查询、增加等等,都是属于自定义SQL。
什么是存储过程?
就是多条SQL的集合。例如,自定义SQL就好比是单行代码,而存储过程就是一个方法,里面放了多行代码(甚至里面会包含条件判断等语句)~但是不建议大家使用存储过程,原因:1、操作难度大 2、不能进行调试 3、修改和扩展难~
什么是高级映射?
我们首先来看一下MyBatis在整个框架中的定位,框架交互流程图:
MyBatis也是一个ORM框架,ORM(Object Relational Mapping),也就是关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换:
- 将输入数据(即传入对象) + SQL映射成原生SQL
- 将结果集映射为返回对象,即输出对象
ORM把数据库映射为对象:
- 数据库表(table)-->类(class)
- 记录(record,行数据)-->对象(object)
- 字段(field)-->对象的属性(attribute)
一般的ORM框架,会将数据库模型的每张表都映射为一个Java类。
也就是说使用MyBatis可以像操作对象一样来操作数据库中的表,可以实现对象和数据库表之间的转换
因此,MyBatis是更简单完成程序和数据库交互的工具,也就是说更简单的操作和读取数据库工具。
2、配置MyBatis开发环境
2.1、创建数据库和表
要操作数据库,当然需要里面有内容才可以呀~
例如,我这里的数据库和表创建:
-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使用数据数据
use mycnblog;-- 创建表[用户表]
drop table if exists userinfo;
create table userinfo(id int primary key auto_increment,username varchar(100) not null,password varchar(32) not null,photo varchar(500) default '',createtime datetime,updatetime datetime,`state` int default 1
) default charset 'utf8mb4';-- 创建文章表
drop table if exists articleinfo;
create table articleinfo(id int primary key auto_increment,title varchar(100) not null,content text not null,createtime datetime,updatetime datetime,uid int not null,rcount int not null default 1,`state` int default 1
)default charset 'utf8mb4';-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(vid int primary key,`title` varchar(250),`url` varchar(1000),createtime datetime,updatetime datetime,uid int
)default charset 'utf8mb4';-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);-- 文章添加测试数据
insert into articleinfo(title,content,uid)values('Java','Java正文',1);-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);
在数据库中添加之后,就开始整活啦~
2.2、添加MyBatis框架支持
创建项目时,和创建Spring Boot项目一样,只是在添加依赖时,需要注意一下:
然后就可以创建出来啦~不知道怎么创建Spring Boot项目的伙伴可以看看我前几期的博客,里面有详细介绍~http://t.csdn.cn/YUSql
如果是需要在旧项目中添加MyBatis依赖 ,可以使用插件EditStarters,具体怎么使用,在创建Spring Boot项目里面都有介绍~http://t.csdn.cn/Aa4MG
2.3、配置连接字符串和MyBatis
也就是数据库连接字符串设置和MyBatis的XML文件配置
2.3.1、配置连接字符串
在配置文件中配置,例如我使用的是yml配置文件:
spring:datasource:url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=falseusername: root#自己数据库的密码password: "0410"driver-class-name: com.mysql.cj.jdbc.Driver
注:
- 如果mysql-connector-java是5.x之前的使用的是“com.mysql.jdbc.Driver”,如果是大于5.x使用“com.mysql.cj.jdbc.Driver”
- 数据库密码最好加上双引号,否则会有的电脑会报错
2.3.2、配置MyBatis中的XML路径
MyBatis的XML中保存是查询数据库的具体操作SQL,配置【yml配置】如下:
#mybatis xml保存路径
mybatis:mapper-locations: classpath:mybatis/*Mapper.xml
现在呢,该配置的东西已经准备好了,接下来就是一个基本最简单SSM代码,需要怎么做
3、SSM第一个业务代码案例【根据id查询】
流程图:
目录框架【先把框架创建好,在继续进行后续操作,没有的包和类记得是需要自己创建的~】
3.1、添加实体类
package com.example.demo.entitiy;import lombok.Data;import java.time.LocalDateTime;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-03-23* Time:7:37*/
@Data
public class Userinfo {private int id;private String username;private String password;private String photo;private LocalDateTime createtime;private LocalDateTime updatetime;private int state;
}
3.2、添加Mapper接口
package com.example.demo.mapper;import com.example.demo.entitiy.Userinfo;
import org.apache.ibatis.annotations.Mapper;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-03-23* Time:7:41*/
@Mapper
public interface UserMapper {Userinfo getUserById(Integer id);
}
3.3、添加UserMapper.xml
数据持久层的实现,MyBatis的固定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.example.demo.mapper.UserMapper"></mapper>
UserMapper.xml查询SQL的具体实现举例:
<?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.example.demo.mapper.UserMapper"><select id="getUserById" resultType="com.example.demo.entity.Userinfo">select* from userinfo where id = ${id}</select>
</mapper>
注:
- <mapper>标签:需要指定namespace属性,表示命名空间,值为mapper接口的全限定名,包括全包名.类名
- <select>查询标签:是用来执行数据库的查询操作的
- id是和Interface接口中定义的方法名一样的,表示对接口的具体实现方法
- resultType是返回的数据类型,也就是开头我们定义的实体类
3.4、添加Service
服务层实现:
package com.example.demo.service;import com.example.demo.entity.Userinfo;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-03-23* Time:7:58*/
@Service
public class UserService {@Autowiredprivate UserMapper userMapper ;public Userinfo getUserBId(Integer id) {return userMapper.getUserById(id);}
}
3.5、添加Controller
控制层代码实现:
package com.example.demo.controller;import com.example.demo.entity.Userinfo;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Created with IntelliJ IDEA.* Description:* User:龙宝* Date:2023-03-23* Time:8:00*/
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/getuserbyid")public Userinfo getUserById(Integer id) {return userService.getUserBId(id);}
}
3.6、代码测试
执行成功~
好啦本期结束啦~下期对增删改查进行详细讲解~