首页 > 编程语言 >mybatis案例程序

mybatis案例程序

时间:2024-03-27 14:58:27浏览次数:33  
标签:xml mapper getBookById bookID BookMapper 程序 案例 SqlSession mybatis

前置工作

  • 导包(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

标签:xml,mapper,getBookById,bookID,BookMapper,程序,案例,SqlSession,mybatis
From: https://www.cnblogs.com/yulingzhiling/p/18099119

相关文章

  • 大专毕业,我是如何从外卖员成为Android程序员的?
    前言那年,我大专计算机专业毕业,四处寻觅,找不到工作,于是开启了我的送外卖旅途。我骑着电动车走在马路上,看着风雨里空旷的四周,就好像我的人生亦是如此,空空如也。一次意外的偶然事件,我看见了这份《Android宝典》,想起我大学时候的计算机专业,我毅然决然拾起当年的专业,捡起这本《......
  • Java版直播商城免 费 搭 建:平台规划与常见营销模式,电商源码、小程序、三级分销及详解
    【saas云平台】打造全行业全渠道全场景的saas产品,为经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营场景,助力商家成功;系统稳定压倒一切,让商家经营有保障,消费者购物更放心......
  • Python程序设计 循环结构
    1.达依尔的麦子数相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么.达依尔说:”只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格一麦子数的两倍,摆满整个棋盘,我就感恩不尽了。......
  • 用python创建一个简单的GUI程序,python小案例
    importtkinter这一行导入了tkinter库,这是Python中用于创建图形用户界面(GUI)的标准库之一importtkinterastk这一行同样导入了tkinter库,但是使用了as关键字给它起了一个别名tk,这样在代码中就可以使用tk来代替tkinter了,使代码更简洁。window=tk.Tk()创建一个Tkint......
  • [附源码]计算机毕业设计基于大数据的身体健康管理平台(JSP+java+springmvc+mysql+MyBa
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着健康意识的提升和大数据技术的发展,基于大数据的身体健康管理平台成为现代社会追求高质量生活的一个新趋势。这种平台通过收集和分析用户的健康数据,提供个性......
  • [附源码]计算机毕业设计文档管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着信息化时代的到来,企业和机构在日常运营中产生大量文档资料。有效的文档管理系统(DMS)对于保障信息的组织、存储、检索和安全至关重要。一个先进的DMS能够帮助......
  • 列表案例
    1.列表去重1a=[1,2,2,3,3,4,5,5,6,6,3,3]2b=[]3foriinrange(0,len(a)):4if(a[i]notinb):5b.append(a[i])6print(a)7print(b)2.记录评委打分,排序去掉最高和最低分,计算平均分1"""2场景预设:学校组织了这么一个比赛,设置了10名评委打分,......
  • blog-engine-07-gatsby 建极速网站和应用程序 基于React的最佳框架,具备性能、可扩展
    拓展阅读blog-engine-01-常见博客引擎jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman对比blog-engine-02-通过博客引擎jekyll构建githubpages博客实战笔记blog-engine-02-博客引擎jekyll-jekyll博客引擎介绍blog-engine-02-博客引擎jekyll-jekyll如何......
  • 为什么MyBatis的Mpper接口不需要实现类?
    1.不是不需要实现类,而是这些mapper接口不要人为的去实现(即不需要程序员使用者去实现)。2.它们的实现者是MyBatis的框架开发者,通过动态代理实现的MyBatis会在运行时动态创建mapper接口的实现类,这个过程是通过Java的反射机制和CGLIB库来完成的。调用Mapper接口中的方法......
  • java毕业设计基于微信小程序的图书馆预约[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着移动互联网技术的飞速发展,微信小程序凭借其无需下载安装、使用方便的特点,已经成为人们日常生活中不可或缺的一部分。图书馆作为知识传播的重要场所,在......