My Batis

  1. My Batis 是一款优秀的持久层 框架,用于简化JDBC的开发

  2. 官网

持久层:

  1. 负责将数据保存到数据库的那一层代码。
  2. JavaEE三层架构:表现层,业务层,持久层

框架:

  1. 框架就是一个半成品软件,是一套可重用的,通用的,软件基础代码模型
  2. 在框架的基础之上构建软件编写更加高效,规范,通用,可扩展

JDBC缺点:

  1. 硬编码

    • 注册驱动,获取连接
    • SQL语句
  2. 操作繁琐
    • 手动设置参数
    • 手动封装结果集
//原始jdbc操作(查询数据)//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获得连接
Connection connection = DriverManager.getConnection("jdbc:mysql:///test","root","rootpassword");
//获得statement
PreparedStatement statement = connection.prepareStatement("select id,username,passwod from user");
//执行查询
ResultSet resultSet = statement.executeQuery();
//遍历结果集
while(resultSet.next()){//封装实体User user = new User();user.setId(resultSet.getInt("id"));user.setUsername(resultSet.getString("username"));user.setPassword(resultSet.getString("password"));
}
//释放资源
resultSet.close();
statement.close();
connection.close();

My Batis简化

  • 硬编码 ------> 配置文件
  • 操作简化 -------> 自动完成

My Batis快速入门:

步骤:

查询表中所有的数据:

  1. 创建表,添加数据
  2. 创建模块,导入坐标
  3. 编写My Batis 核心配置文件 ----> 替换连接信息解决硬编码问题
  4. 编写SQL映射文件 ——>统一管理SQL语句,解决硬编码问题
  5. 编码:
    • 定义POJO类
    • 加载核心配置文件,获取SQLSessionFactory对象
    • 获取sqlSession对象,执行SQL语句
    • 释放资源
<!--连接池信息-->
<dataSource type = "POOLED"><property name = "driver" value = "com.mysql.cj.jdbc.Driver"/><property name = "url" value = "jdbc:mysql:///db1?useSSL=false"/><property name = "username" value = "root"/><property name = "password" value = "1234"/>
</dataSource><!--SQL映射文件-->
<Select id = "SelectAll" resultType="路径名">select * from tb_user;
</Select>

Mapper代理开发:

My Batis核心配置文件:

MyBatis 核心配置文件的顶层结构如下:

  • configuration (配置)

    • properties (属性)
    • settings(设置)
    • typeAliases(类型别名)
    • typeHandlers(类型处理器)
    • objectFactory(对象工厂)
    • environments(环境变量)
      • environment(环境变量)
      • transactionManager(事务管理器)
      • dataSource(数据源)
    • databaseldProvider(数据库厂商标志)
    • mappers(映射器)
  • 类性别名(typeAliases)

    <typeAliases><package name="xxx.xxxxx.xxx(类的地址名)"<!--细节:配置各个标签时,需要遵循前后顺序-->
    </typeAliases>
    

增删改查:

安装My Batisx插件:

  1. 打开Settings
  2. 点击plugins
  3. 搜索mybatisx
  4. 点击下载

MyBatis完成需要三步:

  1. 编写接口方法
  2. 编写SQL
  3. 执行方法

查询

分析出三件事:

  1. SQL语句怎么写
  2. 完成这个功能要不要参数
  3. 完成之后返回怎么样的结果

步骤:

  1. 编写接口方法:Mapper几口

    –>参数:无

    –>结果:List

  2. 编写SQL语句:SQL映射文件;

  3. 执行方法,测试

List<Brand>select();<select id="selectAll" resultType="brand">select * from tb_branf;
</select>

resultMap映射 ID主键 result一般建

测试类模板:

import com.tingli.pojo.User;import com.tingli.mapper.UserMapper;
import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.InputStream;
import java.util.List;public class Mytest {@Testpublic void selectAll() throws Exception {//获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取SqlSessiion对象SqlSession sqlSession = sqlSessionFactory.openSession();//获取Mapper接口的代理对象UserMapper usermapper = sqlSession.getMapper(UserMapper.class);//执行方法List<User> users = usermapper.selectAll();System.out.println(users);//释放资源sqlSession.close();}
}

时区报错:

插入

  1. 编写数据库表

  2. 编写UserMapper.xml

     <!--插入操作--><insert id="save" parameterType="com.tingli.domain.User">insert into user values(#{id},#{username},#{password})</insert>
    
  3. 编写UserMapper接口的插入方法

    import com.tingli.domain.User;
    import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {//查询List<User> fingAll();//插入User save();
    }
    
  4. 编写测试文件

     @Testpublic void test2() throws Exception {//获得核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//获得SQLSession工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//获得session对话SqlSession sqlSession = sqlSessionFactory.openSession();//执行操作User user = new User();user.setId(7);user.setUsername("tom");user.setPassword("abc");sqlSession.insert("com.tingli.mapper.UserMapper.save",user);//提交sqlSession.commit();//释放资源sqlSession.close();}//注意:  插入操作需要提交事务,否则无法传递到数据库
    

    修改

    1. 编写数据库

    2. 编写UserMapper.xml

          <!--修改操作--><update id="update" parameterType="com.tingli.domain.User">update user set username = #{username},password = #{password} where  id = #{id}</update>
      
    3. 编写UserMapper接口的修改方法

      public interface UserMapper {//查询List<User> fingAll();//插入User save();//修改User update();
      }
    4. 编写测试文件

      //修改@Testpublic void test3() throws Exception {//获得核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//获得SQLSession工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//获得session对话SqlSession sqlSession = sqlSessionFactory.openSession();//执行操作User user = new User();user.setId(7);user.setUsername("lucy");user.setPassword("123");sqlSession.update("com.tingli.mapper.UserMapper.update",user);//提交sqlSession.commit();//释放资源sqlSession.close();}
      

删除

  1. 编写数据库

  2. 编写UserMapper.xm

    <mapper namespace="com.tingli.mapper.UserMapper"><!--删除操作--><delete id="delete" parameterType="int" >delete  from user where id = #{id}</delete>
    </mapper>
    <!--之前同样格式,放在同一mapper标签-->
    
  3. 编写UserMapper接口的删除方法

    import com.tingli.domain.User;
    import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {//删除Integer delete();
    }
    
  4. 编写测试文件

    //删除@Testpublic void test4() throws Exception {//获得核心配置文件InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");//获得SQLSession工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);//获得session对话SqlSession sqlSession = sqlSessionFactory.openSession();//执行操作User user = new User();user.setId(7);sqlSession.delete("com.tingli.mapper.UserMapper.delete",user);//提交sqlSession.commit();//释放资源sqlSession.close();}
    

    查询操作为另一张表,其他操作同一张表

    在测试类之前创建数据库表的实体类User ,接口UserMapper与UserMapper.xml目录名相同,名称相同否则运行报错

My Batis 基础及简单的增删改查操作相关推荐

  1. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  2. mybatis学习4之使用注解开发实现简单的增删改查

    前言 使用注解完成简单的增删改查操作 本质:反射机制的体现 原理:动态代理 一.需要注意什么 1.注解在接口上实现 2.需要在核心配置文件上绑定接口,使用类绑定或者包绑定时,接口和它的Mapper配置 ...

  3. JDBC中用控制台简单对数据库进行增删改查操作(IDEA.2023)

    文章目录 前言 一.首先是每个操作共用的操作大纲 1.注册驱动 2.创建连接 3.编写SQL语句结果,动态值的部分使用?代替 4.创建prepareStatement,并且传入SQL语句的结果 5.占 ...

  4. vue结合php增删改查实例,从vue基础开始创建一个简单的增删改查的实例

    1.安装vue-clicnpm install vue-cli -g  --执行全局安装 2.创建一个webpack的基础项目:命令:vue init webpack myproject; 以下是项目 ...

  5. 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!

    什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...

  6. 国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作

    引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...

  7. javaweb简单的登录增删改查系统_国产化之路统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作...

    引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...

  8. Struts2 注解开发实现简单的增删改查,超详细教程

    声明:此文是原创,如果需要转载请注明出处:https://blog.csdn.net/hunter_max/article/details/80575542 上一篇博客<Struts2 注解开发 ...

  9. mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数

    mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...

最新文章

  1. python学习-day2_课堂作业
  2. java datetime now_相当于C#的DateTime.Now在Java中?
  3. Linux下设置mysql和tomcat开机启动
  4. [bbk4966]第70集 第8章 -性能维护 01
  5. server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]
  6. java获取界面输入数字_通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、...
  7. idea mybaits逆向工程_IDEA 中集成 MyBatis Generator 组件逆向生成工程
  8. html的canvas显示数字,HTML5效果:Canvas 实现圆形进度条并显示数字百分比
  9. overflow c语言_C语言表结构(一)
  10. 使用MS Test进行单元测试
  11. iOS 下载和播放 M3U8
  12. PaddleOCR之模型介绍与测试
  13. 基于CCS工程MSP430串口升级(三)
  14. 你喜欢试探别人的底线吗?
  15. 《大话脑影像》之:趣谈散点图与相关系数
  16. 中文图书期刊数据库文献检索
  17. 修炼打工皇帝不得不学的三招
  18. 3.7 Dictionary(字典)
  19. 不适当的云安全 后果很严重
  20. 2020联通光猫超级管理密码 - PT952G

热门文章

  1. 超大Excel文件的写入
  2. 站长在线经典Python题:使用Python编程思想解决鸡兔同笼的问题的4种方法
  3. HTML选中所有的div,单击鼠标即可选择所有DIV文本
  4. Flutter 动画(1)Animated
  5. knime3命令行执行方式
  6. jsqlparser
  7. fastapi获取请求参数
  8. 通俗理解 React 高阶函数
  9. vpp的网卡直通配置和SRIOV配置方法
  10. keil5在点击debug时,全速运行按钮不能按的情况