学习数据库的操作框架(mybatis)

原始jdbc操作数据库开发比较麻烦要频繁地创建关闭而且与SQL语句耦合了(在代码中不易更改,)

基于java的持久层 框架,封装了jdbc通过xml或者注解方式动态映射成SQL语句,来执行后映射成对象并返回。采取了orm思想。

基本步骤:导入依赖jar包 准备好user数据库表 user实体类 写mapper.xml 和sqlmapconfig.xml 然后写个test进行测试…

mysql mysql-connector-java 5.1.32 org.mybatis mybatis 3.5.2 junit junit 4.12 log4j log4j 1.2.17

sqlmapconfig.xml

<?xml version="1.0" encoding="UTF-8" ?> 数据环境--> -加载映射文件--> ## mapper.xml <?xml version="1.0" encoding="UTF-8" ?> select * from user

测试类

@Test
public void test1() throws IOException {
//mybatis的基本操作:
// 获得核心配置文件 获得session工厂对象
// 获得session回话对象 传参namescape+id执行操作 释放资源
InputStream resourceAsStream = Resources.getResourceAsStream(“sqlMapconfig.xml”);

    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

    SqlSession sqlSession = sqlSessionFactory.openSession();

    List<User> userList = sqlSession.selectList("userMapper.findAll");

    System.out.println(userList);

    sqlSession.close();
}

#

一级更新数据是要提交事务,才会更新数据到数据库

在这里插入图片描述

mybatis 的dao层的实现方式: 代理接口

public class Mybatistest {
public static void main(String[] args) throws IOException {
//测试 用代理接口的方法来执行SQL
InputStream resourceAsStream = Resources.getResourceAsStream(“sqlMapconfig.xml”);
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List userList = userMapper.findAll();
System.out.println(userList);
}
}
在这里插入图片描述

sql 语句的动态写法

select * from user id=#{id} and username=#{username} and password=#{password}

实现BaseTypeHandler接口 然后在slqMapConfig .xml文件进行配置可以将数据库的类型和java类进行相互转换…(例子:Date->Long->Date)

<typeHandlers>
    <typeHandler handler="com.itheima.handler.DateTypeHandler"></typeHandler>
</typeHandlers>

plugins插件标签 例子:分页查询导入jar坐标 写配置PageHelper 测试

差一个核心配置文件的代码

<?xml version="1.0" encoding="UTF-8" ?> -配置--> -定义别名--> --配置类型转换器--> --配置分页插件--> -设置数据库类型--> -数据环境--> -加载映射文件-->

在这里插入图片描述

一对一

左边:查询出来的结果 右边:封装的实体属性 第四个是个实体对象 <!--> --> association是匹配的意思--> property=是Private User user javaType=是order封装的实体类--> # 一对多
    <collection property="orderList" ofType="order">
        <id column="oid" property="id"/>
        <result column="ordertime" property="ordertime"/>
        <result column="total" property="total"/>
    </collection>

</resultMap>

多对多就是SQL变一下 还是将结果封装一下

最后是mybatis的注解开发 简单的基本语句 和复杂的@results @result 和一对一 一对多 多对多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值