当前位置:网站首页 > 技术博客 > 正文

MySQL增删改查



mybatis的简介这里就不多说了,百度一大堆,我们只需要这是一个JDBC的升级版,让我们更好的操作数据库,减少不必要的代码,让我们专注于实现自己的业务逻辑.

web开发的三层架构 (mvc )

  1. 三层架构
    界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)
    业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
    数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。

    三层对应的包
    界面层: controller包 (servlet)
    业务逻辑层: service 包(XXXService类)
    数据访问层: dao包(XXXDao类)


    三层对应的处理框架
    界面层—servlet—springmvc(框架)
    业务逻辑层—service类–spring(框架)
    数据访问层—dao类–mybatis(框架)





使用 JDBC 的缺陷

  1. 代码比较多,开发效率低
  2. 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
  3. 对 ResultSet 查询的结果,需要自己封装为 List
  4. 重复的代码比较多些
  5. 业务代码和数据库的操作混在一起

MyBatis 解决的主要问题

  1. 注册数据库的驱动,
  2. 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
  3. 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
    4.关闭资源
    ResultSet.close() , Statement.close() , Conenection.close()

mybatis使用步骤:

1.导入maven环境
2.创建dao接口,里面定了你需要对数据库执行什么操作
3.编写mapper文件,sql映射文件,写上你的sql语句
4.创建mybatis主配置文件,读取配置文件中的内容,连接到数据库
5.使用mybatis对象执行sql语句:sqlSession对象
6.关闭连接:sqlSession.close();




新建数据库表

CREATE TABLE (
int NOT NULL AUTO_INCREMENT,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
varchar(255) DEFAULT NULL,
PRIMARY KEY ()
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;






1.使用maven新建一个项目(项目 目录结构)
在这里插入图片描述

1.1准备一个java Use 类

 
  

2.配置pom.xml文件导入相应的依赖包

 
  

3.编写dao接口

 
  

4.编写dao接口的xml文件

 
  

5.资源目录下的 mybatis.xml文件

 
  

6.测试是否可以用

 
  

7.测试结果:
在这里插入图片描述
注意事项:

1:target目录下一定要有这两个文件,如果没有,手动复制进去也行
在这里插入图片描述
2.mysql的依赖配置如果是高版本的:
driver的值是:com.mysql.cj.jdbc.Driver


3.mysql的依赖配置如果是高版本的,url是这样的:
dbc:mysql://localhost/book_ctiy?serverTimezone=GMT%2B8
一定要加上时区,不然会报错
4.在pom.xml配置文件中需要加上,才能更好的将pom.xml和UserManagerDao.xml文件映射出去
在这里插入图片描述



项目的目录结构: :
需要注意的是target目录下必须有标记红色框的那两个文件,否则执行的时候回报错
在这里插入图片描述

1.准备数据库表

 
  

2.创建实体类

 
  

3.创建maven项目,大多数配置一样,但是某些配置根据自己的来

注意:

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>





 
  

4.配置mybatis的主配置文件
注意点:
mysql驱动包如果是高版本的:
driver的值需要些成:com.mysql.cj.jdbc.Driver 否则会报异常
url需要加上时区:否则执行会报错
url= jdbc:mysql://主机名/数据库名?serverTimezone=GMT%2B8




 
  

5.编写mybatis工具类
工具类就是为了简化代码,因为有很多重复写,而且没有意义的代码,可以创建工具类,有工具类完成,使我们的代码更加简洁.

 
  

5.定义dao接口,看我们需要实现哪些功能

 
  

6.编写Dao.xml文件.让这个xml文件去代替我们的JDBC

注意点:
mapper 标签的namespace的值
尽量按照这个规范:com.mybatis.dao.UserManagerDao
方便后面使用动态代理,使用反射机制.
模糊查询的sql语句参数是$不是#
是这样






 
  

而不是这样

 
  
 
  

7.编写daoImpl

注意点:
执行完sql语句之后一定要几点关闭数据库连接
sqlSession.close();
在执行增删改的时候mybatis是默认手动提交事务,需要我们手动设置为自动提交事务
方法1: sqlSession.commit();
方法2:在工具类中设置:sqlSession = factory.openSession(true);//自动提交事务






 
  

8.编写Test类 测试我们的方法是否可用

 
  
  1. Resources: mybatis中的一个类, 负责读取主配置文件
    InputStream in = Resources.getResourceAsStream(“mybatis.xml”);

2.SqlSessionFactoryBuilder : 创建SqlSessionFactory对象,
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);


3.SqlSessionFactory : 重量级对象, 程序创建一个对象耗时比较长,使用资源比较多。

SqlSessionFactory:接口 , 接口实现类: DefaultSqlSessionFactory
SqlSessionFactory作用: 获取SqlSession对象。
SqlSession sqlSession = factory.openSession();

openSession()方法说明:
1. openSession() :无参数的, 获取是非自动提交事务的SqlSession对象
2. openSession(boolean): openSession(true) 获取自动提交事务的SqlSession.
openSession(false) 非自动提交事务的SqlSession对象


4.SqlSession: 执行sql语句的对象
SqlSession接口 :定义了操作数据的方法 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback()
SqlSession接口的实现类DefaultSqlSession。

在mybatis增删改查的基础上,我们只需要删除daoImpl实现类就好了,其余的不变

使用mybatis动态代理的注意事项:
在这里插入图片描述

测试userManagerDao中的接口方法

 
  

在这里插入图片描述

其实传参的方式有很多种,我们掌握以下三种,已经完全够用,如果不够用可以上网的传参方式。

使用@Param进行传参:

1.1接口中的写法

 
  

1.2.dao.xml文件中的写法 @Param(“myId”) 和我们的参数是相对应的

 
  

1.3.使用动态代理的时候传参方式

 
  

使用java对象进行传参:

2.dao接口

 
  

2.2.dao.xml文件配置

 
  

2.3.调用dao接口方法

 
  

3:使用map集合传参

3.1集合中传map集合

 
  

3.2dao.xml中使用map的key值进行传参

 
  

3.3测试类的实现

 
  
 
  
 
  

在这里插入图片描述

mybatis返回值类型支持的别名机制对应表

在这里插入图片描述
resultType:的返回值可以是别名,也可以是返回值类型的全限定义名称(可以是任意类型)

自定义 resultType:的返回值类型

第一种方式:

1.在mybatis主配置文件中加上typeAliases标签

 
  

2.在dao.xml文件中使用即可

 
  

第二种方式:

1.在mybatis主配置文件中:

 
  

2.在dao.xml文件中使用即可

 
  

查询结果的返回值

1.返回map类型

1.1dao接口

 
  

1.2dao.xml配置文件

 
  

1.3测试类

 
  

2.返回对象

2.1 dao接口

 
  

2.2dao接口配置文件

 
  

2.3测试方法

 
  

使用Map映射关系解决数据库列名和实体类对象属性名不一致,
导致反射异常无法赋值的解决方案:一 (重点掌握)

1.1dao接口方法

 
  

1.2dao接口配置文件

 
  

1.3测试是否可行

 
  

数据库表:
在这里插入图片描述
实体类对象属性:
在这里插入图片描述


测试结果 : ok 可行
在这里插入图片描述
使用给列名起别名解决数据库列名和实体类对象属性名不一致,
导致反射异常无法赋值的解决方案:2 (重点掌握)


2.1dao接口方法

 
  

2.2 dao接口配置文件

 
  

2.3 测试方法

 
  

总结:两种都可以 :不过第二种要简单一些;

if , where, Foreach的使用

MyBatis工具类

 
  

1.1 dao接口

 
  

1.2 dao.xml配置文件

 
  

1.3 测试方法

 
  
 
  

1.1 dao接口

 
  

1.2 dao.xml配置文件

 
  

1.3 测试方法

 
  

1.mybatis.xml配置文件

 
  

2.配置文件
在这里插入图片描述

 
  

mapper文件映射的2中方式

 
  

1.pom.xml中导入依赖

 
  

2.在mybatis配置文件中配置插件environments标签之前

 
  

3.dao接口方法

 
  

4.dao.xml配置文件

 
  

5.测试方法

 
  

扩展资料

 
  

                            

版权声明


相关文章:

  • 代码对比工具merge2025-10-11 21:30:03
  • maven 安装配置2025-10-11 21:30:03
  • jmap的常用命令2025-10-11 21:30:03
  • 一句话木马图片2025-10-11 21:30:03
  • swing实现画图2025-10-11 21:30:03
  • 结构体中结构体2025-10-11 21:30:03
  • mgg转mp3格式转换器免费2025-10-11 21:30:03
  • 黑客软件查姓名手机号2025-10-11 21:30:03
  • 智慧宿管综合平台2025-10-11 21:30:03
  • 建立霍夫曼树 霍夫曼编码及解码2025-10-11 21:30:03