Mybatis的配置与使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Mybatis所用jar包
  • 二、使用步骤
    • 1.配置mybatis.xml文件
    • 2.创建与数据库对应的po类,提供get、set、toString方法
    • 3.创建与Dept对应的接口类:DeptDao
    • 4.创建DeptDao.xml配置文件
    • 5.调用


前言

以下详细说明了mybatis配置环境,与使用方式(CRUD)。

提示:以下是本篇文章正文内容,下面案例可供参考

一、Mybatis所用jar包

提取码:xyz1

其中log4j.jar与log4j.xml为日志文件,可方便记录运行情况。

二、使用步骤

1.配置mybatis.xml文件

使用的数据库为Oracle数据库,代码如下(示例):

<?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><!-- 配置jdbc --><properties><property name="driver"   value="oracle.jdbc.driver.OracleDriver"/><property name="url"      value="jdbc:oracle:thin:@localhost:1521:orcl"/><property name="username" value="scott"/><property name="password" value="root"/></properties><!-- 起别名 --><typeAliases><typeAlias type="com.hwua.po.Dept" alias="dept"/><typeAlias type="com.hwua.po.Emp" alias="emp"/></typeAliases><!-- 声明所有的操作环境 --><environments default="development"><!-- 声明当前正在用的操作环境 --><environment id="development"><!-- 声明事务的管理方式 --><transactionManager type="JDBC"></transactionManager><!-- 创建数据库连接池的时候的必要条件 -->	<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!-- 配置映射配置文件 --><mappers><!-- <mapper resource="com/hwua/dao/DeptMapper.xml" /><mapper resource="com/hwua/dao/EmpMapper.xml"/> --><!--一次性全部配置--><package name="com.hwua.dao"/></mappers>
</configuration>

2.创建与数据库对应的po类,提供get、set、toString方法

例如Dept:

package com.hwua.po;import java.util.List;public class Dept {private int deptno;private String dname;private String loc;private List<Emp> emps;public List<Emp> getEmps() {return emps;}public void setEmps(List<Emp> emps) {this.emps = emps;}public Dept() {super();}public int getDeptno() {return deptno;}public void setDeptno(int deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + ", emps=" + emps + "]";}}

3.创建与Dept对应的接口类:DeptDao

接口类主要提供方法

package com.hwua.dao;import java.util.List;
import java.util.Map;import com.hwua.po.Dept;public interface DeptDao {//查找全部public List<Dept> SelectAll();//根据id查找public Dept findById(int deptno);//添加public void insert(Dept d);//修改public void update(Dept d);//删除public void Delete(int deptno);//查询部门编号,显示所有此部门的员工public Dept findByIdDetial(int deptno);
}

4.创建DeptDao.xml配置文件

	*标签中的id为接口方法中的方法名resultType为返回的结果类型parameterType为传入值的类型*
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hwua.dao.DeptDao"><!-- 查找全部 --><select id="SelectAll" resultType="com.hwua.po.Dept">select * from dept</select><!-- 根据id查找 --><select id="findById" resultType="com.hwua.po.Dept" parameterType="int">select * from dept where deptno = #{deptno}</select><!-- 添加 --><insert id="insert" parameterType="dept">insert into dept(deptno,dname,loc)values(#{deptno},#{dname},#{loc})</insert><!-- 修改 --><update id="update" parameterType="dept">update dept set dname = #{dname},loc = #{loc} where deptno = #{deptno}</update><!-- 删除 --><delete id="Delete" parameterType="int">Delete from dept where deptno = #{deptno}</delete>
<mapper>

5.调用

public void helloDept() {//读取mybatis配置文件InputStream in = Test.class.getClassLoader().getResourceAsStream("mybatis.xml");//通过SqlSessionFactoryBuilder工具类获取factory,再通过其获取到SqlSessionSqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(in);SqlSession sqlSession = factory.openSession();//获取映射器DeptDao dd = sqlSession.getMapper(DeptDao.class);int deptno = 10;Dept d = dd.findById(deptno);System.out.println(d);}

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

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

相关文章

入门干货之用DVG打造你的项目主页-Docfx、Vs、Github

由于这三项技术涉及到的要点以及内容较多&#xff0c;希望大家有空能自己挖掘一下更多更深的用法。0x01、介绍VS&#xff0c;即VS2017以及以上版本&#xff0c;宇宙最好的IDE&#xff0c;集成了宇宙最有前景的平台&#xff0c;前阶段也支持了宇宙最好的语言。Github&#xff0c…

P2579,jzoj2288-[ZJOI2005]沼泽鳄鱼【矩阵乘法】

正题 题目链接:https://www.luogu.org/problemnew/show/P2579 题目大意 一张无向图&#xff0c;一个起点一个终点。 有食人鱼&#xff0c;在若干个点之间有周期的移动&#xff0c;周期为222或333或444个点为循环。 然后要求从起点到终点走kkk步且不碰到食人鱼的方案数。 解…

ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)

前言本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期.这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度.正文今天我们主要讲讲如何使用自带IOC容器,emm..虽然自带的功能不是那么强大,但是胜在轻量级..而且..不用引…

P4130,jzoj1214-[NOI2007]项链工厂【线段树】

正题 题目链接:https://www.luogu.org/problemnew/show/P4130 题目大意 一个环形颜色珠子链&#xff0c;位置(注意不是上面的珠子)从最上顺时针下来位置依次标号1∼n1\sim n1∼n。 然后要求支持以下操作 Rk:R\ k:R k:将所有珠子顺时针旋转kkk个。F:F:F:将所有珠子以111向下翻…

LeetCode常用算法模式大厂面试题整理

转载自 LeetCode常用算法模式&大厂面试题整理 文章目录 1、滑动窗口 2、双指针 3、快慢指针 4、合并区间 5、循环排序 6、就地反转链表 7、堆-优先队列问题 8、Top K 9、归并 10、单调栈 11、回溯法 BATJ等大厂面试真题汇总 1、滑动窗口 1 一个左指针&#xff0c;一个右…

ABPZero系列教程之拼多多卖家工具

此系列文章围绕着拼多多卖家工具来介绍ABPZero的使用&#xff0c;内容包括手机登录、手机注册、拼团提醒、微信公众号绑定帐号、有拼团发送消息到微信公众号&#xff08;只要关注过微信公众号并已绑定系统帐号&#xff09;。学习此系列必备&#xff1a;手机验证码&#xff1a;使…

欢乐纪中某A组赛【2019.7.6】

前言 斐大爷NBNBNB 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC555(J−2)WYC(J-2)WYC(J−2)WYC210210210100100100100100100101010666(J−3)ZZY(J-3)ZZY(J−3)ZZY200200200100100100100100100000666(J−…

详解Vue中watch的高级用法

转载自 详解Vue中watch的高级用法 我们通过实例代码给大家分享了Vue中watch的高级用法&#xff0c;对此知识点有需要的朋友可以跟着学习下。 假设有如下代码&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <div> <p>FullName: {{fullName}}<…

g4e基础篇#4 了解Git存储库(Repo)

Git 存储库看上去就是一个文件夹&#xff0c;只是在这个文件夹中不仅仅保存了所有文件的当前版本&#xff0c;也同时保存了所有的历史记录&#xff0c;这些额外的信息都保存在当前文件夹下面的.git子目录中。因为前面我们所描述的git跟踪改动的特殊方式 &#xff0c;git可以在很…

P3846-[TJOI2007]可爱的质数【BSGS,数论】

正题 题目链接:https://www.luogu.org/problemnew/show/P3846 题目大意 BL≡N(modP)B^L\equiv N(mod\ P)BL≡N(mod P) 求最小的LLL。 解题思路 首先为了顺眼改一下变量名 Ax≡B(modP)A^x\equiv B(mod\ P)Ax≡B(mod P) 然后我们设xi∗t−j(0≤i≤t,0≤j≤t−1)xi*t-j(0\leq i\…

Oracle常用查询语句

Oracle常用查询语句 查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前用户的角色SQL>select * from user_role_privs;查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_p…

net的retrofit--WebApiClient库

# 库简介WebApiClient是开源在github上的一个httpClient客户端库&#xff0c;内部基于HttpClient开发&#xff0c;是一个只需要定义c#接口(interface)&#xff0c;并打上相关特性&#xff0c;即可异步调用http-api的框架 &#xff0c;支持.net framework4.5、netcoreapp2.0和ne…

P5021-赛道修建【平衡树,贪心,二分答案】

正题 题目链接:https://www.luogu.org/problemnew/show/P5021 题目大意 一棵树找mmm条不重边路径使得最短的那条最长。 解题思路 首先最小的最大显然二分一下答案。之后问题转换为找最多条长度不小于midmidmid的路径。 如果dpdpdp的话需要二维&#xff0c;显然不能胜任本题…

Sentinel(一)之简介

转载自 Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么&#xff1f; 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从限流、流量整形、熔断降级、系统负…

使用xUnit为.net core程序进行单元测试(中)

第一部分: 使用xUnit为.net core程序进行单元测试(上), 下面有一点点内容是重叠的....String Assert测试string是否相等&#xff1a;[Fact]public void CalculateFullName(){var p new Patient{FirstName "Nick",LastName "Carter"};Assert.Equal(&quo…

P2048-[NOI2010]超级钢琴【RMQ,堆】

正题 题目链接:https://www.luogu.org/problemnew/show/P2048 题目大意 一个长度为nnn序列aaa。寻找kkk个子序列要求长度在L∼RL\sim RL∼R之间&#xff0c;求这kkk个子序列的最大和。 解题思路 首先对aaa求出前缀和数组sss。题目转换为求kkk个数对要求两两之间距离在L∼RL\…

Sentinel(二)之Quick Start

转载自 Sentinel Quick Start 1.1 公网 Demo 如果希望最快的了解 Sentinel 在做什么&#xff0c;我们可以通过 Sentinel 新手指南 来运行一个例子&#xff0c;并且能在云上控制台上看到最直观的监控和流控效果等。 1.2 手动接入 Sentinel 以及控制台 下面的例子将展示应用如…

hdu5115-Dire Wolf【区间dp】

正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid5115 题目大意 有nnn只狼&#xff0c;击败第iii只狼会扣aia_iai​加上于其相邻的狼的blbrb_lb_rbl​br​点hphphp。注意该狼被击败后会使原来于其相邻的狼变的相邻。 解题思路 显然区间dpdpdp&#xff0c;设fi,jf_…

.net的retrofit--WebApiClient库深入篇

前言本篇文章的内容是对上一篇.net的retrofit--WebApiClient库的深层次补充&#xff0c;你可能需要先阅读上一篇才能理解此篇文章。本文将详细地讲解WebApiClient的原理&#xff0c;结合实际项目中可能遇到的问题进行使用说明。库简介WebApiClient是开源在github上的一个httpCl…