首页 > 其他分享 >MyBatis的相应API与传统和代理开发的Dao层实现

MyBatis的相应API与传统和代理开发的Dao层实现

时间:2022-12-22 10:03:59浏览次数:32  
标签:java Dao API IOException MyBatis import com public

MyBatis的相应API

1、SqlSession工厂构建器SqlSessionFactoryBuilder

常用API:SqlSessionFactory build(InputStream inputStream)

通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象


MyBatis的相应API与传统和代理开发的Dao层实现_User

其中,mybatis-config.xml是类加载器的路径,在maven工程下就是resource资源下,Resources工具类,这个类在org.apache.ibatis.io包中。Resource类帮助你从类路径下、文件系统或一个webURL中加载资源文件。

sqkSessionFactory有多个方法创建SqlSession实例,常用的有两个


MyBatis的相应API与传统和代理开发的Dao层实现_User_02

2、SqlSession会话对象

SqlSession实例在MyBatis是非常强大的一个类,在这里会看到所有执行语句、提交或回滚事务和获取映射实例的方法有


MyBatis的相应API与传统和代理开发的Dao层实现_List_03

操作事务的方法主要有


MyBatis的相应API与传统和代理开发的Dao层实现_List_04

Mybatis的Dao层实现

1、传统开发方式-编写UserDao接口

测试编写UserDao接口

controller包下UserController类下

package com_Dao.controller;

import com_Dao.service.Impl.UserServiceImpl;
import com_Dao.service.UserService;
import com_mybatis.pojo.User;

import java.io.IOException;
import java.util.List;

public class UserController {
public static void main(String[] args) throws IOException {
UserService userService=new UserServiceImpl();
List<User> userList = userService.findAll();
System.out.println(userList);
}

}

service包下UserService下

接口

package com_Dao.service;

import com_mybatis.pojo.User;

import java.io.IOException;
import java.util.List;

public interface UserService {

public List<User> findAll() throws IOException;
}

实现类下

package com_Dao.service.Impl;

import com_Dao.Dao.Impl.UserDaoImpl;
import com_Dao.Dao.UserDao;
import com_Dao.service.UserService;
import com_mybatis.pojo.User;

import java.io.IOException;
import java.util.List;

public class UserServiceImpl implements UserService {
UserDao userDao=new UserDaoImpl();
@Override
public List<User> findAll() throws IOException {
return userDao.findAll();
}
}

dao包下的UserDao下

接口下

package com_Dao.Dao;

import com_mybatis.pojo.User;

import java.io.IOException;
import java.util.List;

public interface UserDao {
public List<User> findAll() throws IOException;
}

实现类下

package com_Dao.Dao.Impl;

import com_Dao.Dao.UserDao;
import com_mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class UserDaoImpl implements UserDao {
@Override
public List<User> findAll() throws IOException {

//获得核心配置文件
InputStream resourceAsFile = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsFile);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作 参数:namespace+id
List<User> userList = sqlSession.selectList("userMapper.findAll");
return userList;
}
}

其他文件,如sqlMapConfig.xml和UserMapper.xml等中的配置和之前的一致

运行结果


MyBatis的相应API与传统和代理开发的Dao层实现_List_05

2、代理开发方式

介绍

采用Mybatis的电路考法方式实现Dao层的开发,这种方式是我们进入企业的主流。

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。 Mapper接口开发需要遵循以下规范:

1.Mapper.xml文件中的namespace与mapper接口的全限定名相同
2.Mapper接口方法名和Mapperxml中定义的每个statement的id相同
3.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
4.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
规范图示对应


MyBatis的相应API与传统和代理开发的Dao层实现_java_06

代码测试代理开发

UserDao下

package com_Dao_DaiLi.Dao;
import com_mybatis.pojo.User;
import java.io.IOException;

public interface UserDao {
public User findById(int id) throws IOException;
}

service包下

package com_Dao_DaiLi.service;

import com_Dao_DaiLi.Dao.UserDao;
import com_mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class ServiceTest {
public static void main(String[] args) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();

UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.findById(1);
System.out.println(user);

}
}

UserMapper1.xml下

<?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_Dao_DaiLi.Dao.UserDao">


<!--根据id进行查询-->
<select id="findById" parameterType="int" resultType="user">
select *from user where id=#{id}
</select>



</mapper>

还需注意将sqlMapConfig.xml下加载UserMapper1.xml下

MyBatis的相应API与传统和代理开发的Dao层实现_List_07

运行结果


MyBatis的相应API与传统和代理开发的Dao层实现_User_08

标签:java,Dao,API,IOException,MyBatis,import,com,public
From: https://blog.51cto.com/u_15733182/5962355

相关文章

  • .net core web api 路由约束
    路由约束在传入URL发生匹配时执行,URL路径标记为路由值。路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。某些路由约束使用路由值以外......
  • SSM(Spring 、SpringMVC 、Mybatis)框架整合
    1.引入依赖<!--引入spring相关--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.2.RELEAS......
  • ptrade 量化交易接口 API接口文档
    http://ptradeapi.com  更新了多个可转债数据接口比如:ptradeapi #可转债溢价率规模数据 ......
  • Flink:DataStreamAPI
    执行环境获取的执行环境是StreamExecutionEnvironment类的对象。在代码中创建执行环境的方法,就是调用这个类的静态方法。getExecutionEnvironment根据上下文直接得到......
  • echarts api的介绍
    参考的地址:https://echarts.apache.org/zh/api.htmlecharts.initecharts.init(dom?:HTMLDivElement|HTMLCanvasElement,theme?:Object|string,opts?:{devicePi......
  • Flink使用TableAPi方式读取和写入Hive
    以下是一个简单的参考实例,用来验证通过FlinkSQL来跑批方式清洗Hive数据可行的。(1)验证了Hive中org.openx.data.jsonserde.JsonSerDe格式的表是可以直接读取数据出来的(2)通......
  • mybatis-plus 多租户 自定义sql
    Mapper中增加注解即可实现自定义sqlpublicinterfaceSysCustomerConfigMapperextendsBaseMapper<SysCustomerConfig>{/***根据条件查询客户设置信息......
  • 使用 Doxygen 来生成 Box2d 的 API 文档
      对于Doxygen以前只听别人说过,而现在使用它也是一个偶然,缘分吧。前两天看box2d的官方sdk中,发现他有用户手册却没有说明,只是留下了一个Doxygen的文件。事情告一......
  • mybatis-plus的乐观锁
    什么是悲观锁?什么又是乐观锁?悲观锁是为了保证数据不被另外修改而增加的一种锁,具有独占性和排他性,在整个处理过程中数据都是被锁住的。适合于读少写多的情况。乐观锁是在......
  • 持续集成:通过Jenkins API创建项目和节点
    我在持续集成:JenkinsAPI使用方法详细介绍中介绍了jenkinsAPI的使用方法,比如使用API读取jenkins项目相关信息、触发构建等操作,除此之外,还可以直接使用API来创建项目、新建......