首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记录自己的第一个mybatis项目

很简单的一个小项目,只进行了最基础的数据库查询,但mybatis该有的功能完整的体现出来了。文章底部提供项目完整链接。

项目结构:

原理

大纲:

应用程序找Mybatis要数据

mybatis从数据库中找来数据

2.1 通过mybatis-config.xml 定位哪个数据库

2.2 通过Category.xml执行对应的select语句

2.3 基于Category.xml把返回的数据库记录封装在Category对象中

2.4 把多个Category对象装在一个Category集合中

返回一个Category集合

运行TestMybatis.java后,它将mybatis-config.xml使用Resources.getResourceAsStream()以字节输入流加载进来,然后根据字节流创建一个SqlSessionFactory对象, 再得到session,通过session的selectList方法根据mybatis-config中sql语句的id执行该sql语句, 结果返回在list集合里.

public class TestMybatis { public static void main(String[] args) throws IOException { //根据配置文件mybatis-config.xml得到sqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //然后再根据sqlSessionFactory 得到session SqlSession session=sqlSessionFactory.openSession(); //最后通过session的selectList方法,调用sql语句listCategory。listCategory这个就是在配置文件Category.xml中那条sql语句设置的id。 //执行完毕之后,得到一个Category集合,遍历即可看到数据。 List cs=session.selectList("listCategory"); for (Category c : cs) { System.out.println(c.getName()); } }}

上面说到了mybatis-config, 其中主要是写了mybatis的数据库名、账号密码、驱动信息、编码方式:

驱动的配置信息另外包含了时区和是否启用ssl,因为我使用的是高版本mysql。注意转义连接符。

我们注意到pojo包下有一个category.java和xml文件,这俩是啥呢?

category是实体类,作用是把查询的结果映射成实体,用来存储数据。

其配置文件包含了要执行的sql,

当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。

当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

来看看这二者的代码:

实体类:

public class Category { private int id; private String name; 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; } }

配置文件xml:

写完后也是对所学有了一个梳理,感觉还是有所收获的。

jar包:

mybatis-3.5.2.jar

mysql-connector-java-8.0.11.jar

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200818A0KU9A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券