mybatis环境搭建步骤(含配置文件代码)

1.创建web项目

2.将所需要的jar包放在项目内,并且build-path

3.创建资源文件夹resources

4.在资源文件夹中创建xml文件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><!-- 起别名 --><typeAliases><typeAlias alias="Dept" type="org.entity.Dept"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/schooldb"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!-- 加载的映射文件 --><mapper resource="org/dao/IDeptDao.xml"/></mappers>
</configuration>

5.创建entity包,根据数据库表创建实体类,一个表对应一个实体类,表中的字段对应实体类中的属性

6.创建dao包,在dao包中创建接口(在接口写方法,增删改查)

public int addDept(Dept dept);
public List<Dept> findDeptAll();

7.在dao层中编写mapper.xml文件,一般mapper文件和接口文件名相同

8.IDeptDao.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="org.dao.IDeptDao"><!-- 查询部门的数量 --><select id="findCountDept"  resultType="int">select count(*) from dept</select><!-- 添加信息 --><insert id="addDept" parameterType="org.entity.Dept">insert into dept(did,dname) values(#{did},#{dname}); </insert><!-- 修改信息 --><update id="updateDept" parameterType="org.entity.Dept">update dept set dname = #{dname} where did = #{did}</update><!-- 删除 --><delete id="delDept" parameterType="org.entity.Dept" >delete from dept where did = #{did}</delete><!-- 查询全部 --><select id="findDeptAll" resultType="org.entity.Dept">select * from dept;</select><!-- 根据编号查询信息 --><select id="findDeptById" resultType="org.entity.Dept"parameterType="int">select * from dept where did = #{did}</select>
</mapper>

9.编写测试类,代码如下:

package org.test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Scanner;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.dao.IDeptDao;
import org.entity.Dept;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class TestMain {//单元测试String path = "mybatis-config.xml";SqlSession session = null;InputStream in =null;@Beforepublic void before(){try {in = Resources.getResourceAsStream(path);session = new SqlSessionFactoryBuilder().build(in).openSession();} catch (IOException e) {e.printStackTrace();}}//查询部门数量@Testpublic void testCount() {// 加载xml文件int count = session.selectOne("org.dao.IDeptDao.findCountDept");System.out.println("一共有:" + count + "个部门");}//添加信息@Testpublic void addDept(){Dept dept = new Dept();dept.setDid(6);dept.setDname("运维部");int rel = session.insert("org.dao.IDeptDao.addDept",dept);//提交(增删改)session.commit();if(rel>0){System.out.println("添加成功");}else{System.out.println("添加失败");}}//查询全部@Testpublic void findAllDept(){List<Dept> dList = session.getMapper(IDeptDao.class).findDeptAll();for (Dept dept : dList) {System.out.println("编号:"+dept.getDid()+",名称:"+dept.getDname());}}//根据编号查询public Dept findDeptById(int did){Dept dept = session.getMapper(IDeptDao.class).findDeptById(did);return dept;}//修改@Testpublic void updateDel(){findAllDept();System.out.println("请输入用户编号:");Scanner sc = new Scanner(System.in);int did = sc.nextInt();//根据编号查询Dept dept = findDeptById(did);System.out.println("需要修改的部门信息:");System.out.println("编号:"+dept.getDid()+",名称:"+dept.getDname());System.out.println("请输入新的部门名称:");dept.setDname(sc.next());//调用修改的方法int rel = session.getMapper(IDeptDao.class).updateDept(dept);//提交session.commit();if(rel>0){System.out.println("修改成共");}else{System.out.println("修改失败");}}//删除@Testpublic void delDept(){findAllDept();System.out.println("请输入需要删除的编号:");Scanner sc = new Scanner(System.in);Dept dept = session.getMapper(IDeptDao.class).findDeptById(sc.nextInt());//调用删除int rel = session.getMapper(IDeptDao.class).delDept(dept);session.commit();if(rel>0){System.out.println("删除成功");findAllDept();}}//最后执行@Afterpublic void after(){if(session!=null){session.close();}}
}

往期精彩

上机不会做?在讲台上做做试试!

2020-12-15

mybatis的配置文件和映射文件

2020-12-14

Ajax实现动态及时刷新表格数据

2020-12-13

相比学习好的学生,老师最喜欢努力认真学习的学生

2020-12-12

小课堂?小视频?小商店?

2020-12-11

什么样的事才是有意义的

2020-12-10

点分享

点点赞

点在看

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

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

相关文章

多久没有给家里打过电话了?

你多久没有给家里打过电话了&#xff1f;对于我这种常年在外&#xff0c;且工作地距家直线距离都有数百公里的人来说&#xff0c;回家可是一种极大的奢侈啊。貌似自从在济南上班以来&#xff0c;平均每年也就有空回去两次&#xff0c;第一次一般都是有急事需要赶紧赶回去&#…

Feign数据压缩传输

没使用之前 使用 使用之后

漫画:删去k个数字后的最小值

转载自 漫画&#xff1a;删去k个数字后的最小值 我们来举一个栗子&#xff1a; 给定整数 541270936&#xff0c;要求删去一个数&#xff0c;让剩下的整数尽可能小。 此时&#xff0c;无论删除哪一个数字&#xff0c;最后的结果都是从9位整数变成8位整数。既然同样是8位整数&…

使用 InSpec 实现符合性即代码

法规符合性是每个企业必须面对的一个现实问题。同时&#xff0c;随着改变业界格局的新技术以及客户对数字服务的期望的出现&#xff0c;竞争压力也随之增加。各行业能否在快速交付新产品和服务的同时&#xff0c;仍然履行法规符合性义务&#xff1f; 回答是肯定的。解决方案就是…

计算机专业毕业后能做什么工作?

众所周知&#xff0c;目前比较火的专业之一莫过于计算机专业了。在这个互联网时代&#xff0c;越来越多的人选择去学习计算机专业&#xff0c;可是你知道计算机专业毕业后都有哪些岗位可选择吗&#xff1f;各个岗位的工作任务主要是什么&#xff1f;以下是对于计算机专业中各个…

什么是 binlog

转载自 什么是 binlog 引言 为什么写这篇文章? 大家当年在学MySQL的时候&#xff0c;为了能够迅速就业&#xff0c;一般是学习一下MySQL的基本语法&#xff0c;差不多就出山找工作了。水平稍微好一点的童鞋呢还会懂一点存储过程的编写&#xff0c;又或者是懂一点索引的创建…

[信息安全] 4.一次性密码 amp;amp;amp;amp; 身份认证三要素

在信息安全领域&#xff0c;一般把Cryptography称为密码&#xff0c;而把Password称为口令。日常用户的认知中&#xff0c;以及我们开发人员沟通过程中&#xff0c;绝大多数被称作密码的东西其实都是Password&#xff08;口令&#xff09;&#xff0c;而不是真正意义上的密码。…

干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)

01T-SQL案例整理已知有一个表&#xff1a;该表的字段有&#xff1a;id,name,date,gradeid,email&#xff0c;表名为table_name,按要求实现下面内容。1.插入一条记录&#xff1a;insert into table_name values (1,刘世豪,2017-10-21,1,666qq.com)2.将学号是1的学生姓名修改成张…

深入源码分析Java线程池的实现原理

转载自 深入源码分析Java线程池的实现原理 程序的运行&#xff0c;其本质上&#xff0c;是对系统资源&#xff08;CPU、内存、磁盘、网络等等&#xff09;的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。 网上有…

“桌面日历”记录的事件居然是看某某视频……

某年某月某下午&#xff0c;正在激情澎湃的在讲台上讲课&#xff0c;忽发现医学生缓缓的将右手举起来&#xff0c;见状&#xff0c;不用想&#xff0c;他一定有问题&#xff0c;嗯……要问我。于是&#xff0c;紧走几步下去&#xff0c;问他怎么了&#xff0c;他说他的某某功能…

开源个.NetCore写的 - 并发请求工具PressureTool

本篇和大家分享的是一个 并发请求工具&#xff0c;并发往往代表的就是压力&#xff0c;对于一些订单量比较多的公司这种情况很普遍&#xff0c;也因此出现了很多应对并发的解决方案如&#xff1a;分布式&#xff0c;队列&#xff0c;数据库锁等&#xff1b; 对于没有遇到过或者…

浅析DNS域名解析过程

转载自 浅析DNS域名解析过程 对于每一个HTTP请求发起过程中&#xff0c;都有很重要的一个步骤——DNS解析&#xff0c;本篇文章将跟着DNS解析过程来分析域名是如何解析的。 一、DNS域名解析步骤 下图是DNS域名解析的一个示例图&#xff0c;它涵盖了基本解析步骤和原理。 下…

最好的方法,是为你们量身定制!

昨天还和佟老师在讨论3班的学习情况&#xff0c;整体来说&#xff0c;学习氛围还是比较好的。由于近几天各种事纠结在一块儿&#xff0c;本来想给三班的学生制作一个提升计划&#xff0c;一直都腾不出来手。今天&#xff0c;终于抽了一点点时间&#xff0c;在原来互帮互助计划的…

Entity Framework Core 命名约定

注意&#xff1a;我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时&#xff0c;功能可能存在变动。Entity Framework 迁移允许从模型生成数据库&#xff0c;这意味着必须从类名和属性名生成数据库对象的名称。对于大多数人来说使用默认名称是没有问…

ZOJ1654-Place the Robots【最大匹配,图论】

正题 大意 一个n*m个地方&#xff0c;有墙&#xff0c;草地和空地。在空地可以放机器人&#xff0c;机器人会将看到的其他机器人 [河蟹] 掉。他不能隔墙看。求最多能放多少个机器人。 解题思路 这里用一种奇特的构图方法&#xff0c; &#xff08;盗一下ppt里的图&#xff0…

彻底理解JVM常考题之分级引用模型

转载自 彻底理解JVM常考题之分级引用模型 本文通过探析Java中的引用模型&#xff0c;分析比较强引用、软引用、弱引用、虚引用的概念及使用场景&#xff0c;知其然且知其所以然&#xff0c;希望给大家在实际开发实践、学习开源项目提供参考。 Java的引用 对于Java中的垃圾…