JAVA入门[6]-Mybatis简单示例

初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情。

一、建表

create table Category (
Id INT not null,
Name varchar(80) null,
constraint pk_category primary key (Id)
);

插入测试数据

INSERT INTO category VALUES (1,'Fish');
INSERT INTO category VALUES (2,'Dogs');
INSERT INTO category VALUES (3,'Birds');

二、新建测试项目

新建Maven项目,最终的项目结构如下:

Image(32)

修改pom.xml,引入mybatis相关依赖。

<dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version><scope>runtime</scope></dependency></dependencies>

 

三、建立pojo

建立Category对应的实体,这里为了方便测试重写了toString()方法。

public class Category implements Serializable {private int id;private String name;private static final long serialVersionUID = 1L;public int getId() {return id;}public void setId(int id) {this.id= id;}public String getName() {return name;}public void setName(String name) {this.name = name == null ? null : name.trim();}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append(getClass().getSimpleName());sb.append(" [");sb.append("Hash = ").append(hashCode());sb.append(", id=").append(id);sb.append(", name=").append(name);sb.append("]");return sb.toString();}
}

四、定义数据访问接口

在src/main/cathy.mybatis/mapper包,新增CategoryMapper接口,这里只定义GetById方法。

public interface CategoryMapper {public Category GetById(int id);
}

五、配置mybatis xml文件

1.mybatis的配置都基于XML文件,我们放在resources/config/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 type="model.Category" alias="Category" /></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/store" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper resource="mapper/CategoryMapper.xml" /></mappers>
</configuration>
  • typeAliases: 类型别名是为 Java 类型设置一个短的名字,用来减少类完全限定名的冗余。
  • dataSource:使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
  • mappers:用来定义SQL映射语句

六、SqlSession工具类

构建SqlSession有多种方式,这里我们先从mybatis-config.xml配置文件构建SqlSessionFactory,然后从SqlSessionFactory获取SqlSession。

public static SqlSession getSqlSession() {SqlSession session = null;try {InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);session = factory.openSession();} catch (Exception e) {e.printStackTrace();}return session;}

 

七、调用:

public static void main(String[] args) {SqlSession sqlSession=MybatisUtils.getSqlSession();try{CategoryMapper categoryMapper=sqlSession.getMapper(CategoryMapper.class);Category category=categoryMapper.GetById(1);if(category==null){System.out.println("该分类不存在");}else{System.out.println(category.toString());}}catch (Exception e){System.out.println(e.getMessage());}finally {MybatisUtils.closeSession(sqlSession);}}

 

运行结果:Category [Hash = 731395981, id=1, name=Fish]

 

源码地址:https://pan.baidu.com/s/1kUKXnMn

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

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

相关文章

qpsk调制matlab实现,QPSK调制解调Matlab实现(ing待补充说明)

自写%QPSKclose all;clc;%思路&#xff1a;1.输入一组随机初始信息x[01矩阵]&#xff1b;% 2.按两两一组通过for循环判别4种组合&#xff0c;分别对应星座图4个点% 3.做星座图% a.过程中考虑过将01序列两两分开表示出来&#xff0c;不知是否有必要&#xff0c;未实现% b.考虑两…

猴子吃桃问题(南阳ACM324)

猴子吃桃问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;0描述有一堆桃子不知数目&#xff0c;猴子第一天吃掉一半&#xff0c;又多吃了一个&#xff0c;第二天照此方法&#xff0c;吃掉剩下桃子的一半又多一个&#xff0c;天天如此&#…

ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

ASP.NET MVC5 EF6 入门教程 (6) View中的Razor使用 原文:ASP.NET MVC5 EF6 入门教程 (6) View中的Razor使用文章来源&#xff1a; Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节&#xff1a;ASP.NET MVC5 EF6 入门教程 (5) M…

matlab中求三维中的多个体积,用matlab计算由下面2个几何体围成的体积: x^2+y^2+z^2=36,((x-4)/5)^2+((y-1)/3)^2+((z-2)/5)^2=1...

答&#xff1a;>> triplequad((x,y,z)1*(x.^2y.^2z.^2答&#xff1a;首先建立一个m文件 我取的名字叫 syfs0000 function ysyfs0000(x) y[9*x(1)^236*x(2)^24*x(3)^2-36; x(1)^2-2*x(2)^2-20*x(3); 16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2;]; end 然后在command window 输入 …

分析分布式服务框架

出处&#xff1a;http://www.cnblogs.com/zhangs1986/ 技术是为需求而服务的&#xff0c;分布式服务框架也同样如此&#xff0c;它不是凭空诞生的&#xff0c;也是因为有这样的需求才会有分布式服务框架这么样的东西诞生&#xff0c;在这篇blog中来详细的分析分布式服务框架诞…

PL/SQL注册码

code:j6stndb9tk72xfbhbqczcdqnjd8lyj466n number:882851 ps&#xff1a;xs374ca转载于:https://www.cnblogs.com/myblogslh/p/4203173.html

递归--基于回溯和递归的八皇后问题解法

八皇后问题是在8*8的棋盘上放置8枚皇后&#xff0c;使得棋盘中每个纵向、横向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一个可行解如图所示&#xff1a; 思路 对于八皇后的求解可采用回溯算法&#xff0c;从上至下依次在每一行放置皇后&#xff0c;进行搜索&a…

matlab emf 读取,20140219-Emf_Demo EMF 矢量图 可以读取和保存EMF 的封闭类 非常实用 matlab 238万源代码下载- www.pudn.com...

文件名称: 20140219-Emf_Demo下载收藏√ [5 4 3 2 1 ]开发工具: Visual C文件大小: 6312 KB上传时间: 2014-07-10下载次数: 2详细说明&#xff1a;EMF 矢量图 可以读取和保存EMF矢量图的封闭类非常实用-EMF EMF vector can read and save the class very useful vector cl…

orcale 之 集合操作

集合操作就是将两个或者多个 sql 查询的结果合并成复合查询。常见的集合操作有UNION(并运算)、UNION ALL、INTERSECT(交运算)和MINUS(差运算)。 UNION UNION 运算可以将多个查询结果集相加,形成一个结果集, 其结果相当于集合运算的并运算. UNION 可以将第一个查询结果的所有行与…

PDFMate PDF Converter Pro

http://www.pdfmate.com转载于:https://www.cnblogs.com/scgw/p/4203999.html

linux 广播

广播是一台主机向局域网内的所有主机发送数据。这时&#xff0c;同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下: (1)确定一个发送广播的接口&#xff0c;如eth0 (2)确定广播的地址&#xff0c;通过ioctl函数&#xff0c;请求码设置为SIOCGIFBRDADDR得到广播的地…

thinkphp5.1 php7,空白目录 · 细数ThinkPHP5.1.7版本新特性 · 看云

>[danger] 官方已经在前不久发布了ThinkPHP5.1.7版本&#xff0c;5.1版本相较于5.0版本而言&#xff0c;本身更加严谨和规范&#xff0c;更接近主流设计思想。近半年来&#xff0c;5.1版本更新频繁&#xff0c;此次最新版本更是带来了很多的新特性。正在或者打算使用5.1版本…

JS中popup.js

为什么80%的码农都做不了架构师&#xff1f;>>> //popup class 显示弹出窗口&#xff0c;。/*以下为使用popup对象&#xff0c;传入相应的配置参数&#xff0c;弹出不同类型的窗口 function ShowIframe() //显示iframe { var popnew P…

图像连通域标记算法研究

搬以前写的博客【2014-03-01 08:09】 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章&#xff0c;它主要探讨利用文字内…

lightoj 1214

lightoj 1214 Large Division &#xff08;大数除法&#xff09; 链接&#xff1a;http://www.lightoj.com/volume_showproblem.php?problem1214 题意&#xff1a;给定 a&#xff0c; b 两个数&#xff0c;判断 a 是否整除 b 。&#xff08;a 为 大数&#xff09; 思路&#…

二阶振荡衰减 matlab,基于Matlab/Simulink的二阶控制系统仿真研究

1 二阶控制系统模型本文引用地址&#xff1a;http://www.eepw.com.cn/article/201612/328597.htm能够用二阶微分方程描述的系统称为二阶控制系统。在控制工程实践中&#xff0c;二阶控制系统十分常见&#xff0c;例如&#xff0c;电枢控制的直流电动机&#xff0c;RLC网络和弹簧…

CCF201409-5 拼图(30分)

试题编号&#xff1a; 201409-5 试题名称&#xff1a; 拼图 时间限制&#xff1a; 3.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 问题描述给出一个nm的方格图&#xff0c;现在要用如下L型的积木拼到这个图中&#xff0c;使得方格图正好被拼满&#xff0c;请问总共有…

欧几里得算法(即辗转相除法)的时间复杂度

本文是参考新浪博客而写。 欧几里得算法, 又称辗转相除法, 用于求两个自然数的最大公约数. 算法的思想很简单, 基于下面的数论等式 gcd(a, b) gcd(b, a mod b) 其中gcd(a, b)表示a和b的最大公约数, mod是模运算, 即求a除以b的余数. 代码如下: #include <iostream> #i…

UIImageJPEGRepresentation和UIImagePNGRepresentation

在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresenta…

C++ 0x

转载于:https://www.cnblogs.com/iiiDragon/p/3230006.html