My Batis 基础及简单的增删改查操作
My Batis
My Batis 是一款优秀的持久层 框架,用于简化JDBC的开发
官网
持久层:
- 负责将数据保存到数据库的那一层代码。
- JavaEE三层架构:表现层,业务层,持久层
框架:
- 框架就是一个半成品软件,是一套可重用的,通用的,软件基础代码模型
- 在框架的基础之上构建软件编写更加高效,规范,通用,可扩展
JDBC缺点:
- 硬编码
- 注册驱动,获取连接
- SQL语句
- 操作繁琐
- 手动设置参数
- 手动封装结果集
//原始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快速入门:
步骤:
查询表中所有的数据:
- 创建表,添加数据
- 创建模块,导入坐标
- 编写My Batis 核心配置文件 ----> 替换连接信息解决硬编码问题
- 编写SQL映射文件 ——>统一管理SQL语句,解决硬编码问题
- 编码:
- 定义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插件:
- 打开Settings
- 点击plugins
- 搜索mybatisx
- 点击下载
MyBatis完成需要三步:
- 编写接口方法
- 编写SQL
- 执行方法
查询
分析出三件事:
- SQL语句怎么写
- 完成这个功能要不要参数
- 完成之后返回怎么样的结果
步骤:
编写接口方法:Mapper几口
–>参数:无
–>结果:List
编写SQL语句:SQL映射文件;
执行方法,测试
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();}
}
时区报错:
插入
编写数据库表
编写UserMapper.xml
<!--插入操作--><insert id="save" parameterType="com.tingli.domain.User">insert into user values(#{id},#{username},#{password})</insert>
编写UserMapper接口的插入方法
import com.tingli.domain.User; import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {//查询List<User> fingAll();//插入User save(); }
编写测试文件
@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();}//注意: 插入操作需要提交事务,否则无法传递到数据库
修改
编写数据库
编写UserMapper.xml
<!--修改操作--><update id="update" parameterType="com.tingli.domain.User">update user set username = #{username},password = #{password} where id = #{id}</update>
编写UserMapper接口的修改方法
public interface UserMapper {//查询List<User> fingAll();//插入User save();//修改User update(); }
编写测试文件
//修改@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();}
删除
编写数据库
编写UserMapper.xm
<mapper namespace="com.tingli.mapper.UserMapper"><!--删除操作--><delete id="delete" parameterType="int" >delete from user where id = #{id}</delete> </mapper> <!--之前同样格式,放在同一mapper标签-->
编写UserMapper接口的删除方法
import com.tingli.domain.User; import org.apache.ibatis.annotations.Select;import java.util.List;public interface UserMapper {//删除Integer delete(); }
编写测试文件
//删除@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 基础及简单的增删改查操作相关推荐
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...
- mybatis学习4之使用注解开发实现简单的增删改查
前言 使用注解完成简单的增删改查操作 本质:反射机制的体现 原理:动态代理 一.需要注意什么 1.注解在接口上实现 2.需要在核心配置文件上绑定接口,使用类绑定或者包绑定时,接口和它的Mapper配置 ...
- JDBC中用控制台简单对数据库进行增删改查操作(IDEA.2023)
文章目录 前言 一.首先是每个操作共用的操作大纲 1.注册驱动 2.创建连接 3.编写SQL语句结果,动态值的部分使用?代替 4.创建prepareStatement,并且传入SQL语句的结果 5.占 ...
- vue结合php增删改查实例,从vue基础开始创建一个简单的增删改查的实例
1.安装vue-clicnpm install vue-cli -g --执行全局安装 2.创建一个webpack的基础项目:命令:vue init webpack myproject; 以下是项目 ...
- 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!
什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...
- 国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作
引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...
- javaweb简单的登录增删改查系统_国产化之路统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作...
引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...
- Struts2 注解开发实现简单的增删改查,超详细教程
声明:此文是原创,如果需要转载请注明出处:https://blog.csdn.net/hunter_max/article/details/80575542 上一篇博客<Struts2 注解开发 ...
- mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...
最新文章
- python学习-day2_课堂作业
- java datetime now_相当于C#的DateTime.Now在Java中?
- Linux下设置mysql和tomcat开机启动
- [bbk4966]第70集 第8章 -性能维护 01
- server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]
- java获取界面输入数字_通过JAVA设计 GUI 界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、...
- idea mybaits逆向工程_IDEA 中集成 MyBatis Generator 组件逆向生成工程
- html的canvas显示数字,HTML5效果:Canvas 实现圆形进度条并显示数字百分比
- overflow c语言_C语言表结构(一)
- 使用MS Test进行单元测试
- iOS 下载和播放 M3U8
- PaddleOCR之模型介绍与测试
- 基于CCS工程MSP430串口升级(三)
- 你喜欢试探别人的底线吗?
- 《大话脑影像》之:趣谈散点图与相关系数
- 中文图书期刊数据库文献检索
- 修炼打工皇帝不得不学的三招
- 3.7 Dictionary(字典)
- 不适当的云安全 后果很严重
- 2020联通光猫超级管理密码 - PT952G