前置工作

  • 导包(mysql-connector-java、mybatis)
  • 实体类

Mapper层

1.接口

public interface BookMapper {
public Book getBookById(Integer bookID);
}

2.创建Mapper的映射文件

<?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.ylzl.mapper.BookMapper">
<select id="getBookById" resultType="com.ylzl.pojo.Book">
select * from books where bookID=#{bookID}
</select>
</mapper>

Service层

可以不使用Service层,使用其他方式包含以下核心代码也可以。

核心代码

static {
String resource = "mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
} //1.读取xml配置文件,创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//2.通过创建SqlSessionFactory对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.通过SqlSession对象获取代理对象mapper,传入接口class对象
BookMapper mapper=sqlSession.getMapper(BookMapper.class);
//4.通过mapper调用接口对应方法
mapper.getBookById(bookID);

以下为使用Service层实现的方式

1.接口

public interface BookService {
Book getBookById(Integer bookID);
}

2.接口实现类(重点关注)

public class BookServiceImpl implements BookService{
static InputStream inputStream = null;
static {
String resource = "mybatis-config.xml";
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
//1.读取xml配置文件,创建SqlSessionFactory对象
private final SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream); @Override
public Book getBookById(Integer bookID) {
//2.通过创建SqlSessionFactory对象获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.通过SqlSession对象获取代理对象mapper,传入接口class对象,
BookMapper mapper = sqlSession.getMapper(BookMapper.class);
//4.通过mapper调用接口对应方法
return mapper.getBookById(bookID);
}
}

Mybatis配置文件mybatis-config.xml(重点关注)

<?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>
<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/ssmbuild"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments> <!--配置映射文件-->
<mappers>
<mapper resource="com/ylzl/mapper/BookMapper.xml"/>
</mappers>
</configuration>

测试

BookService bookServicelmpl = new BookServiceImpl();
System.out.println(bookServicelmpl.getBookById(2));

遇到的问题

1.BookMapper.xml不放在resources下,加过滤

  <build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

2.解决xml编码问题:1 字节的 UTF-8 序列的字节 1 无效:https://www.cnblogs.com/thetree/p/12991403.html

mybatis案例程序的更多相关文章

  1. Mybatis入门程序

    作为一个java的学习者,我相信JDBC是大家最早接触也是入门级别的数据库连接方式,所以我们先来回忆一下JDBC作为一种用于执行SQL语句的Java API是如何工作的.下面的一段代码就是最基本的JD ...

  2. 用Intellij IDEA建mybatis案例

    用IDEA建mybatis案例 环境准备: 首先,建库建表(最好用navicat或sqlpro直接导) 然后打开IDEA, 1. java--->javaEE---> java app-- ...

  3. MyBatis入门程序(基于XML配置)

    创建一个简单的MyBatis入门程序,实现对学生信息的增删改查功能(基于XML配置) 一.新建一个Java工程,导入MyBatis核心jar包.日志相关的jar包以及连接Oracle数据库所需驱动包, ...

  4. MyBatis应用程序根据XML配置文件创建SqlSessionFactory

    MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个Sq ...

  5. Mybatis案例超详解(上)

    Mybatis案例超详解(上) 前言: 本来是想像之前一样继续跟新Mybatis,但由于种种原因,迟迟没有更新,快开学了,学了一个暑假,博客也更新了不少,我觉得我得缓缓,先整合一些案例练练,等我再成熟 ...

  6. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版——小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫“每个人都把自己眼界的局限当成世界的局限”,大学生是

  7. SpringBoot整合Mybatis案例

    SpringBoot整合Mybatis案例 2019/7/15以实习生身份入职公司前端做Angular ,但是感觉前途迷茫,于是乎学习一下Java的框架——SpringBooot. 参照大神博客:ht ...

  8. Mybatis学习——Mybatis入门程序

    MyBatis入门程序 一.查询用户 1.使用客户编号查询用户 (1).创建一个数据表 USE spring; #创建一个名为t_customer的表 CREATE TABLE t_customer( ...

  9. MyBatis案例&增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  10. 关于CKEditor4.5.6的使用,自定义toolbar配置,上传图片案例(SpringMVC+MyBatis案例),自定义行高,去编辑器的中内容,将编辑器中内容设置到指定的位置等

     关于CKEditor的一个配置整理,改文件为config.js: 文件内容如下: /** * @license Copyright (c) 2003-2016, CKSource - Frede ...

随机推荐

  1. Python中`yield`关键字详解

    Python中`yield`关键字有什么用? Python中yield关键字有什么用? 它能做什么? 例如,我试图理解这段代码1: def _get_child_candidates(self, di ...

  2. 旁门左道:借助 HttpClientHandler 拦截请求,体验 Semantic Kernel 插件

    前天尝试通过 one-api + dashscope(阿里云灵积) + qwen(通义千问)运行 Semantic Kernel 插件(Plugin) ,结果尝试失败,详见前天的博文. 今天换一种方式 ...

  3. java 注解结合 spring aop 实现日志traceId唯一标识

    MDC 的必要性 日志框架 日志框架成熟的也比较多: slf4j log4j logback log4j2 我们没有必要重复造轮子,一般是建议和 slf4j 进行整合,便于后期替换为其他框架. 日志的 ...

  4. Innodb学习之MySQL体系结构

    目录 数据库和数据库实例 MySQL体系结构 MySQL各存储引擎特性 Innodb存储引擎 MyISAM BDB: Memory Archive Federated 数据库和数据库实例 数据库是所有 ...

  5. C++ 线程的学习---线程死锁

      因为是学习篇,写下是为了个人的学习与理解.故参考其他文章为多. 为什么会有死锁?           想象一下这样的情况,thread A 在run的时候需要等待thread B的结果,也就是th ...

  6. win32 - 监视网络流量

    可以从Windows Sockets 2开始, 虽然微软提供了官方工具, Microsoft Network Monitor 3.4, 不过我们如果能够通过相关的代码和api的调用来深入研究的话,那就 ...

  7. 硬件开发笔记(八): 硬件开发基本流程,制作一个USB转RS232的模块(七):创建基础DIP元器件(晶振)封装并关联原理图元器件

    前言   有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的.为了更好的表述封装设计过程,本文描述了创建晶振封装(DIP),将原理图的 ...

  8. go语言range语句中的值的坑

    在range语句中生成的数据的值是真实集合元素的副本,它们不是原有元素的引用.这意味着更新这些值将不会 修改原来的数据,同时也意味着使用这些值的地址将不会得到原有数据的指针. package main ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (203)-- 算法导论15.3 2题

    二.对一个16个元素的数组,画出2.3.1节中MERGE-SORT过程运行的递归调用树.解释备忘技术为什么对MERGE-SORT这种分治算法无效.需要写代码的时候,请用go语言. 文心一言,代码不完整 ...

  10. 腾讯云视频转码回调 http code 405

    异常信息 405 Method Not Allowed 异常场景 通过腾讯云SDK上传视频,视频转码完成回调我的接口失败,我这边一直没有log.找到腾讯云工作人员,告诉我这边返回405错误和不支持ge ...