1.框架概念
在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率;
java后端框架
mybaits:对jdbc进行封装
Spring:对整个java后端架构进行管理。
SpringWeb:对web(Servlet)层进行封装
SpringBoot:对Spring框架的搭建进行封装
2.MyBait框架概述
MyBatis 是一款优秀的持久层框架(dao层 数据访问层 数据持久层)。
3.Mybaits搭建
1.创建一个Maven项目

2.导入Mybaits依赖jar(在pom.xml文件中添加以下依赖)

<!--mybaits依赖-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
3.创建一个全局的Mybaits配置文件,配置数据库连接等操作
在resource目录下创建一个mybaits.xml文件,进行配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置数据库连接相关信息-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai" />
<property name="username" value="root" />
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
4.创建数据库,创建表,准备数据


create database ssmdb charset utf8
create table admin(
id int primary key auto_increment,
account varchar(32),
password varchar(32),
gender char(1)
)
5.创建一个访问的接口,并创建相关方法
在com.ffyc.mybaitspro.dao包下,创建AdminDao接口

public interface AdminDao {
Admin finAdminById(int id);
}
6.创建Admin对象
在com.ffyc.mybaitspro.model包下创建此对象,并重写toString()方法

package com.ffyc.mybaitspro.model;
public class Admin {
private int id;
private String account;
private String password;
private String gender;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Admin(){
System.out.println("Admin无参的构造方法");
}
@Override
public String toString() {
return "Admin{" +
"id=" + id +
", account='" + account + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
7.测试Mybaits

public class Test1 {
public static void main(String[] args) throws IOException {
// 1.mybaits读取配置文件
Reader resourceAsReader = Resources.getResourceAsReader("mybaits.xml");
//2.创建 SqlSessionFactory 负责创建SqlSession对象(链接数据库的会话对象,类似Connection对象)
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsReader);
//3.创建SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
// 4.创建接口的代理对象(由框架生成)
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
//5.调用
Admin admin= adminDao.finAdminById(1);//让代理对象帮我们调用映射文件中与此接口中相同名称的方法。
System.out.println(admin);
//关闭与数据库连接
sqlSession.close();//关闭与数据库的连接
}
}
4.搭建补充
1.在IDEA中安装mybatisX插件

type="POOLED" 使用数据库连接池功能 数据库链接池 连接数据库:每次访问数据库,创建一个Connection,用完关闭, 但是访问量过大,每次都要创建新的对象,用完关闭,比较耗时 使用数据库连接池,在池(集合)中事先创建连接对象 用户访问时,直接池中获取一个连接对象 用完不销毁,还回到池中,这样就减少平凡创建销毁连接对象
4.Mybatis日志
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
5.参数传递
<insert id="insertAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id" keyColumn="id" >
insert into admin(account,password,gender)values(#{account},#{password},#{gender})
</insert>
//单元测试
/*以方法为单位,测试
* 使用junit组件实现单元测试
* */
@Test
public void insert(){
System.out.println("新增");
Admin admin=new Admin();
admin.setAccount("aa");
admin.setPassword("111");
admin.setGender("男");
SqlSession sqlSession= MybatisUtil.getSQLSession();
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
adminDao.insertAdmin( admin);
sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
//新增,修改,删除完毕后,都需要手动提交事务
sqlSession.close();
}
运行结果

(2)删除操作
在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id主键,删除行信息

<delete id="deleteAdmin" parameterType="int" >
delete from admin where id =#{id}
</delete>
在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行

//单元测试 /*以方法为单位,测试 * 使用junit组件实现单元测试 * */
@Test
public void delete(){
System.out.println("删除");
SqlSession sqlSession= MybatisUtil.getSQLSession();
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
adminDao.deleteAdmin(6);
sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
//新增,修改,删除完毕后,都需要手动提交事务。
sqlSession.close();
}
运行结果
运行前

运行后

(3)修改操作
在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id,修改行信息

<update id="updateAdmin" parameterType="Admin">
update admin set account=#{account},password=#{password},gender=#{gender}
where id=#{id}
</update>
在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行

@Test
public void update(){
System.out.println("修改");
SqlSession sqlSession= MybatisUtil.getSQLSession();
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
Admin admin=new Admin();
admin.setId(1);
admin.setAccount("1212");
admin.setPassword("23232");
admin.setGender("女");
adminDao.updateAdmin(admin);
sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
//新增,修改,删除完毕后,都需要手动提交事务。
sqlSession.close();
}
运行结果
运行前

运行后

(4)查询操作
在AdminDao接口中定义方法

然后在AadminMapper.xml中添加相应的添加操作方法的sql代码,根据行id,查询行信息

在test包中添加测试代码,在方法上加上@Test注解,进行测试,测试方法是否可以运行
@Test
public void select(){
System.out.println("修改");
SqlSession sqlSession= MybatisUtil.getSQLSession();
AdminDao adminDao=sqlSession.getMapper(AdminDao.class);
Admin admin=new Admin();
adminDao.findAdminById(1);
sqlSession.commit();//提交数据库事务,当程序代码执行没有任何问题时,再向数据库发送提交事务操作,数据库真正执行sql,出现异常则不提交事务。
//新增,修改,删除完毕后,都需要手动提交事务。
sqlSession.close();
}
运行结果


















