0


老师问我MyBatis开发流程是什么?我说我是这样做的。

文章目录

前言

最近刚学了mybatis框架,本文用于以后使用mybatis时,查看具体内容,作为mybatis笔记使用,记录其中关于mybatis的内容

MyBatis的使用

引入jar包

jar包放在WEB-INF的lib下
在这里插入图片描述

  • druid.jar 阿里开源连接池框架,用于替换mybatis内置连接池
  • log4j.jar 日志文件
  • lombok.jar 包含实体类的一些常用方法
  • mybatis.jar mybatis框架
  • mysql-connector.jar JDBC连接jar包

创建实体类

在这里插入图片描述

创建Mapper接口(dao层)

在这里插入图片描述
其中是对数据库的操作的接口

更换数据源

  1. 首先添加druid配置文件

在这里插入图片描述
配置文件内容

druid.driver =com.mysql.cj.jdbc.Driver
druid.url = jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
druid.username=用户名
druid.password=密码

此处

=

前面的内容不能随意更改,文件的名称同样不能更改。

  1. 更改mybatis内置连接池,将无连接池的替换为druid连接池

在这里插入图片描述

文件内容:

packagecom.dyit.util;importorg.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;importcom.alibaba.druid.pool.DruidDataSource;publicclassMybatisDataSourceextendsUnpooledDataSourceFactory{//替换数据源publicMybatisDataSource(){this.dataSource =newDruidDataSource();}}

配置实体类和数据库的映射

在这里插入图片描述
文件名需要为

xxx.mapper.xml

内容:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--  此处填写对数据库操作的接口 --><mappernamespace="com.dyit.mapper.IBookMapper"><cache/><!-- type中本来需要写类的全路径 应该在配置文件中 对实体类进行了设置 所以此处不需要写全名 --><resultMaptype="Book"id="BookMap"><!--  property为实体类的属性名 column为对应数据库的字段名 --><idproperty="id"column="book_id"/><resultproperty="isbn"column="book_isbn"/><resultproperty="title"column="book_title"/><resultproperty="author"column="book_author"/><resultproperty="price"column="book_price"/><resultproperty="date"column="book_date"/><resultproperty="cover"column="book_cover"/></resultMap><!-- 一下是对数据库操作的sql语句 插入标签为insert 增加为update 修改update 查询select --><!-- id为接口中的方法名 --><insertid="save">
        INSERT INTO book_tab(book_isbn,book_title,book_author,book_price,book_date,book_cover)
         VALUES(#{isbn},#{title},#{author},#{price},#{date},#{cover})
    </insert><selectid="findByisbn"resultMap="BookMap">
        SELECT * FROM book_tab WHERE book_isbn = #{isbn}
    
    </select><!-- resultMap为上面数据库和实体类映射的id --><selectid="findById"resultMap="BookMap">
    SELECT * FROM book_tab WHERE book_id = #{id}
        
    </select></mapper>

#{}为根据参数名取出具体的参数值

  • 如果为单参数可直接使用形参名
  • 如果为多参,可以设置注解类填写别名
BookfindBookByIsbn(@Param("isbn")String isbn);

如果设置了别名则{}需要填写别名

${}是拼接 #{}是注入 #{}可以防止sql注入漏洞

mybatis配置文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 读取数据源配置文件 --><propertiesresource="resource/druid/druid.properties"/><!-- 实体类的别名 --><typeAliases><packagename="com.dyit.entity"/></typeAliases><environmentsdefault="development"><environmentid="development"><!-- 事务管理器JDBC --><transactionManagertype="JDBC"/><!-- 配置MyBatis --><dataSourcetype="com.dyit.util.MybatisDataSource"><propertyname="driverClassName"value="${druid.driver}"/><propertyname="url"value="${druid.url}"/><propertyname="username"value="${druid.username}"/><propertyname="password"value="${druid.password}"/></dataSource></environment></environments><!-- 表和类之间的映射 --><mappers><mapperresource="resource/mapper/Book.mapper.xml"/></mappers></configuration>

封装sqlSession

在这里插入图片描述

packagecom.dyit.util;importjava.io.IOException;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.apache.log4j.Logger;/**
 * 单例模式返回实例
 * @author strve
 *
 */publicclassMybatisUtil{privateSqlSessionFactory sqlSessionFactory;privatestaticMybatisUtil instance;//私有化构造方法privateMybatisUtil(){init();}//返回实例publicstaticMybatisUtilgetInstance(){if(instance ==null){synchronized(MybatisUtil.class){if(instance ==null){
                    instance =newMybatisUtil();}}}return instance;}//初始化publicvoidinit(){try{//加载配置文件 返回sqlSessionFactory
            sqlSessionFactory =newSqlSessionFactoryBuilder().build(Resources.getResourceAsReader("resource/config/mybatis-config.xml"));}catch(IOException e){Logger.getLogger(MybatisUtil.class).debug(e.getMessage());
            e.printStackTrace();}}//得到SqlSession对象publicSqlSessionopeSqlSession(){return sqlSessionFactory.openSession();}}

创建单例模式 ,可以得到mybatis封装类对象,可以sqlsession对象

服务层实现

在这里插入图片描述
接口中内容和IBookMapper接口相同

实现类:

packagecom.dyit.service.impl;importorg.apache.ibatis.session.SqlSession;importcom.dyit.entity.Book;importcom.dyit.mapper.IBookMapper;importcom.dyit.service.IBookService;importcom.dyit.util.MybatisUtil;publicclassBookServiceImplimplementsIBookService{//得到mybatis封装类对象privateMybatisUtil db =MybatisUtil.getInstance();@OverridepublicBookfindBookByIsbn(String isbn){//得到sqlSession对象SqlSession sqlSession = db.opeSqlSession();//根据对数据库操作的接口 得到其对象IBookMapper mapper = sqlSession.getMapper(IBookMapper.class);//实现其方法  注意需要在mapper.xml中书写正确的sql语句Book book = mapper.findByisbn(isbn);//提交 事务  注意不能少
        sqlSession.commit();
        sqlSession.close();return book;}}

最后就是controller层的servlet,即可。

标签: jar java mysql

本文转载自: https://blog.csdn.net/qq_45795744/article/details/122911908
版权归原作者 Vivien_oO0 所有, 如有侵权,请联系我们删除。

“老师问我MyBatis开发流程是什么?我说我是这样做的。”的评论:

还没有评论