Mybatis入门程序增删改查操作

学习目标

  • 了解Mybatis的基本知识
  • 熟悉Mybatis的工作原理
  • 掌握Mybatis入门程序的编写

     

文章目录

1.初始Mybatis

2.Mybatis入门程序

 3.Mybatis操作总结


1.初始Mybatis

  • MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2.Mybatis入门程序

1.在MySQL数据库中,创建一个名为mybatis的数据库,在此数据库中创建user表,同时插入相关数据.

2.在Eclipse中,创建Java Project工程,将Mybatis的核心JAR包,lib目录中的依赖JAR包,以及MySQl数据库的驱动JAR包一同添加到项目的lib目录下,并发布到类路径中.添加后的目录如下图

3.MySQL默认使用log4j输出日志信息.如果要查看控制台的输出SQL语句,需要在src目录下创建log4j.properties文件

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.mybatis.mapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4.在src目录下,创建一个com.mybatis.po包,在该包下创建持久化类Customer.实际上,Customer就是一个POJO(普通Java对象),Mybatis就是采用POJO作为持久化类来完成对数据库的操作的.

package com.mybatis.po;public class Customer {private Integer id; // 主键idprivate String username; // 客户名称private String jobs; // 职业public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getJobs() {return jobs;}public void setJobs(String jobs) {this.jobs = jobs;}public Customer(Integer id, String username, String jobs) {super();this.id = id;this.username = username;this.jobs = jobs;}public Customer() {}@Overridepublic String toString() {return "Customer [id=" + id + ", username=" + username + ", jobs=" + jobs + "]";}}

 5.在src目录下,创建一个com.mybatis.mapper包,并在包中创建映射文件Customermapper.xml文件.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 根据客户名编号查询客户信息列表 -->
<mapper namespace="com.mybatis.mapper.CustomerMapper"><!-- 根据客户编号获取客户信息 --><select id="findCustomerById" parameterType="Integer"resultType="com.mybatis.po.Customer">select * from user where id = #{id}</select><!-- 根据客户名模糊查询客户信息列表 --><select id="findCustomerByName" parameterType="String"resultType="com.mybatis.po.Customer">select * from user where username like '%${value}%'</select><!-- 添加用户信息 --><insert id="addCustomer"parameterType="com.mybatis.po.Customer">insert into user(id,username,jobs)values(#{id},#{username},#{jobs})</insert><!-- 更新用户信息 --><update id="updateCustomer"parameterType="com.mybatis.po.Customer">update user setusername=#{username},jobs=#{jobs} whereid=#{id}</update><!-- 删除客户信息 --><delete id="deletetCustomer" parameterType="Integer">delete from userwhere id=#{id}</delete></mapper>	

6. 在src目录下,创建Mybatis的核心配置文件mybatis-config.xml文件.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis" /><property name="username" value="root" /><property name="password" value="123456" /></dataSource></environment></environments><mappers><mapper resource="com/mybatis/mapper/CustomerMapper.xml" /></mappers>
</configuration>

7.在src目录下,创建一个com.mybatis.test包,在该包下创建测试类MybatisTest,并在类中编写各种测试方法.

package com.mybatis.test;import java.io.InputStream;import java.util.List;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 com.mybatis.po.Customer;/** 入门程序测试类*/public class MybatisTest {@Testpublic void findCustomerByNameTest() throws Exception {/** 根据客气编号查询客户信息*/// 1.读取文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 2.通过配置文件构建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 3.通过SqlSessionFactory创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4.SqlSession执行映射文件中定义的SQL,并返回映射结果Customer customer = sqlSession.selectOne("com.mybatis.mapper.CustomerMapper" + ".findCustomerById", 2);// 打印输出结果System.out.println(customer.toString());// 5.关闭SqlSessionsqlSession.close();}@Testpublic void findCustomerByNameTest2() throws Exception {/* 根据用户名名称来模糊查询用户信息列表 */// 1.读取文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 2.通过配置文件构建 SqlSessionFactorySqlSessionFactory SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 3.通过SqlSessionFactory创建SqlSessionSqlSession sqlSession = SqlSessionFactory.openSession();// SqlSession执行映射文件中定义的SQl,并返回映射结果List<Customer> customers = sqlSession.selectList("com.mybatis.mapper.CustomerMapper" + ".findCustomerByName","a");for (Customer customer : customers) {// 打印输出结果System.out.println(customer);}// 4.4提交事务sqlSession.commit();// 5.关闭sqlSessionsqlSession.close();}/** 添加客户*/@Testpublic void addCustomerTest() throws Exception {// 1.读取文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 2.通过配置文件构建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 3.通过SqlSessionFactory创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4.SqlSession执行添加操作// 4.1创建Customer对象,并向对象中添加数据Customer customer = new Customer();customer.setId(5);// 每次添加时需要更改id的值customer.setUsername("Rose");customer.setJobs("公务员");// 4.2执行SqlSession的插入方法,返回的是SQL语句影响的行数int rows = sqlSession.insert("com.mybatis.mapper.CustomerMapper" + ".addCustomer", customer);// 4.3通过返回结果判断插入操作是否执行成功if (rows > 0) {System.out.println("您成功插入了" + rows + "条数据!");} else {System.out.println("执行插入操作失败!");}// 4.4提交事务sqlSession.commit();// 5.关闭sqlSessionsqlSession.close();}/** 更新客户*/@Testpublic void updateCustomerTest() throws Exception {// 1.读取文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 2.通过配置文件构建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 3.通过SqlSessionFactory创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4.SqlSession执行添加操作// 4.1 创建Customer对象,对对象中的数据模拟更新Customer customer = new Customer();customer.setId(2);customer.setUsername("mack");customer.setJobs("教师");int rows = sqlSession.update("com.mybatis.mapper.CustomerMapper" + ".updateCustomer", customer);// 4.3通过返回结果判断插入操作是否执行成功if (rows > 0) {System.out.println("您成功修改了" + rows + "条数据!");} else {System.out.println("修改操作失败!");}// 4.4提交事务sqlSession.commit();// 5.关闭sqlSessionsqlSession.close();}/* 删除客户 */@Testpublic void deleteCustomerTest() throws Exception {// 1.读取文件String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 2.通过配置文件构建 SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 3.通过SqlSessionFactory创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4.sqlSession执行删除操作// 4.1执行sqlSession的删除方法,返回的是SQL语句影响的行数int rows = sqlSession.delete("com.mybatis.mapper.CustomerMapper" + ".deletetCustomer", 3);if (rows > 0) {System.out.println("您成功删除了" + rows + "条数据!");} else {System.out.println("删除操作失败!");}// 4.4提交事务sqlSession.commit();// 5.关闭sqlSessionsqlSession.close();}}

8.选中每一个方法名,右击使用JUnit4执行.可在控制台查看输出结果.

 3.Mybatis操作总结

  1. 读取配置文件。
  2. 根据配置文件构建SqlSessionFactory。
  3. 通过SqlSessionFactory创建SqlSession。
  4. 使用SqlSession对象操作数据库(包括查询,添加,修改,删除以及提交事务等)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 2.0 全局配置项

问题 如何在 ASP.NET Core 2.0 应用程序中读取全局配置项&#xff1f; 答案 首先新建一个空项目&#xff0c;并添加两个配置文件&#xff1a; 1. appsettings.json { "Section1": { "SettingA": "ValueA", "SettingB": "V…

Auto.JS 教程

最近淘宝双十一活动来了&#xff0c;有个自动领猫币的脚本&#xff0c;基于auto.js&#xff0c;亲测有效。有兴趣的点这里 声明&#xff1a; 本教程基于b站up主-笔青居的视频。传送门&#xff1a;https://space.bilibili.com/21486893/video Auto.JS Auto.js 是个基于 JavaScri…

本土开源、立足全球 | COSCon'17

全球公有云 90% 的服务器运行的是开源 Linux 操作系统&#xff01; GitHub 上有超过 150 万个组织&#xff0c;正在进行开源开发&#xff01; 本土开源项目目前在 Apache 的顶级以及孵化列表中已经有 6 个&#xff01; 你想知道这其中都有什么奥秘吗&#xff1f;Apache 顶级项目…

Wamp升级php到7.3版本

在网上找了关于cms的模板&#xff0c;结果显示php版本低于7.2的无法使用。 找了很多wamp和xampp的安装包&#xff0c;要不然版本没到7.2&#xff0c;要不然安装无法使用&#xff0c;浪费了很多时间 于是想自己手动把php升到7.3版本&#xff0c;刚开始看教程&#xff0c;特别麻烦…

浅析Entity Framework Core中的并发处理

前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处理策略 要了解如何处理并发,就要知道并发的一般处理策略 悲观并发策略 悲观并发策略,正如其名,它指的是对数据被外界&…

Mybatis的关联映射

学习目标 了解数据表之间以及对象之间的三种关联关系熟悉关联关系中的嵌套查询和嵌套结果掌握一对一、一对多和多对多关联映射的使用文章目录 1. 关联关系概述 2. 一对一 3.一对多 4. 多对多 1. 关联关系概述 一对一的关系&#xff1a;就是在本类中定义对方类型的对象一对…

【乱码】字符串乱码

1、html <meta charset"UTF-8">2、mysql mysql_query(set names "utf8");3、php header("Content-Type: application/json;charsetUTF-8");json解码 $a你好; echo json_encode($a);加入 $aurldecode($a);即可解码

.NET Core 使用RSA算法 加密/解密/签名/验证签名

前言 前不久移植了支付宝官方的SDK&#xff0c;以适用ASP.NET Core使用支付宝支付&#xff0c;但是最近有好几位用户反应在Linux下使用会出错&#xff0c;调试发现是RSA加密的错误&#xff0c;下面具体讲一讲。 RSA在.NET Core的改动 以前我们使用RSA加密主要是使用RSACryptoSe…

ajax读取.txt文件出现乱码

其实挺简单一问题&#xff0c;刚开始以为页面没输入 <meta charset"UTF-8">结果还是乱码&#xff0c;后来想到老师讲过&#xff0c;新建文件时保存文件有utf8和ANSI等格式&#xff0c;一看果然不对&#xff0c;自己每次新建文件默认格式都是ANSI&#xff0c;这…

萨提亚领衔主题演讲,带领高管和MVP合影,预告Julia女神的演讲中将有我的.NET Core实践

微软Tech Summit 2017大会在精彩的暖场视频中劲爆开始&#xff0c;瞬间点燃参会者们的热情。予力全球每一人、每一组织&#xff0c;成就不凡&#xff0c;是微软的使命。 微软公司首席执行官萨提亚 ∙ 纳德拉发布了主题演讲&#xff0c;他表示&#xff1a;“稳定发展、持续创新…

ajax读取文件未及时更新

在ajax读取文件&#xff08;.txt,.json&#xff09;时&#xff0c;会发生更改文件&#xff0c;ajax读取的还是原来的文件&#xff0c;要想改变这个可以在读取文件的后缀在加个&#xff1f;tXXX 具体情况如下 这样由于t值在变化&#xff0c;浏览器就会认为是个变化的值&#x…

基于.NET CORE微服务框架 -浅析如何使用surging

1、前言 surging受到大家这么强烈的关注&#xff0c;我感到非常意外&#xff0c;比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架&#xff0c;微服务做对比等等&#xff0c;这些举动都让我感觉压力很大&#xff0c;毕竟作为个人的开源项目&#xff0c;无法与…

2019年这50个Kafka面试题,你知道答案么

转载自 2019年这50个Kafka面试题&#xff0c;你知道答案么 Apache Kafka对于新手的面试问题&#xff1a;41, 42, 43, 44, 45, 47, 49 Apache Kafka对于有经验的人的面试问题&#xff1a;46, 48 Apache Kafka的受欢迎程度很高&#xff0c;Kafka拥有充足的就业机会和职业前景…

使用Visual Studio Code 开发.NET Core应用程序

开源和跨平台开发是Microsoft 的当前和将来至关重要的策略。.NET Core已开源&#xff0c;同时开发了其他项来使用和支持新的跨平台策略。.NET Core2.0 目前已经发布&#xff0c;是适用于针对 Web 和云构建跨平台应用程序的最新开源技术&#xff0c;可在 Linux、Mac OS X 和Wind…

Julia女神告诉我任何一家企业本质上都是一家软件公司

微软技术大会今天进入高潮&#xff0c;潘正磊女神发表题为“开发者在数字化转型中的关键价值”的主题演讲&#xff0c;积极评价开发者在各行业数字化转型中扮演的关键角色&#xff1b; 女神潘正磊表示&#xff1a;“由技术创新引领的数字化转型给全球各行业带来了巨大的变革和机…

P3391-[模板]文艺平衡树【Splay】

正题 题目连接:https://www.luogu.org/problemnew/show/P3391 题目大意 一个序列&#xff0c;m个操作翻转[l..r][l..r][l..r]区间。求最终序列 解题思路 节点维护编号&#xff0c;然后答案就是中序遍历。然后翻转的话我们先考虑一个性质。 若这是初始状态(l-1和r1反了) 然后…

Hadoop入门(三)HDFS API

一、、HDFS 常用类 Configuration 配置 Path 路径 FileSystem 文件系统 Stream 流 IOUtils IO工具 API文档 二、类解析 &#xff08;1&#xff09;Configuration 配置文件加载顺序 设置/获取参数方法 &#xff08;2&#xff09;Path Path 常用方法 &#xff08;3&…

在XUnit中用Moq怎样模拟EntityFramework Core下的DbSet

最近在做一个项目的单元测试时&#xff0c;遇到了些问题&#xff0c;解决后&#xff0c;觉得有必要记下来&#xff0c;并分享给需要的人&#xff0c;先简单说一下项目技术框架背景&#xff1a; asp.net core 2.0(for .net core)框架 用Entity Framework Core作ORM XUnit作单元…

解决idea中xml文件报红问题

报错截图&#xff1a; 解决方法&#xff1a; 复制爆红的约束链接file >>> settings >>> Languages & Frameworks >>> Schemas and DTDs右边框中找到 Ignored schemas and DTD3:点击加号添加约束&#xff0c;如下图应用即可&#xff01;

Hadoop入门(四)HDFS编程

一、编程环境设置 编程使用到idea2018&#xff0c;maven &#xff08;1&#xff09;启动集群 在window上启动vmware软件的虚拟机hadoop01&#xff0c;hadoop02&#xff0c;hadoop03。 进入hadoop01虚拟机启动集群&#xff0c;执行命令 start-dfs.sh &#xff08;2&#x…