栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

最简单的ORM入门例子Hibernate,Mybatis,Bee

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最简单的ORM入门例子Hibernate,Mybatis,Bee

一、Bee入门实例

Bee入门实例真的需要十分钟吗?

操作简单,只需在bee.properties里配置了DB相关的url,用户名,密码,
再用一句语句,就可得到对象。

1.

2.Java代码

SuidRich suidRich=BeeFactoryHelper.getSuidRich();
Orders orders=suidRich.selectById(new Orders(), 100001);
Logger.info(orders.toString());//打印

3. 导入jar或用maven,生成javabean,这些几种ORM都是需要的。

关键是Bee还提供了简单易用的生成Javabean工具;不需要xml配置。

再看下以下的例子对比,就知道以前的程序员是多累,现在的程序员,是多么的幸福!

想多些时间做核心业务,在CRUD中解放出来,Bee是你最好的选择。

二、Hibernate入门例子

1.下载Hibernate所需jar包
2.新建java项目,并导入jar包
3.新建User.java文件,User类的属性于数据库表的字段一一对应

4.新建User.hbm.xml文件,建立User类和p_user表的映射关系






    
        
            
        

        
            
        
        
        
            
        
        
            
        
    



5.在src目录下新建hibernate.cfg.xml文件

 


    
    org.hibernate.dialect.MySQLDialect
    com.mysql.jdbc.Driver
    root
    Root
    jdbc:mysql://localhost/pblog
    true
    
    
    

6.创建HibernateUtil工具类,用来获取hibernate的session对象

package com.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
    private static SessionFactory factory = null;

    static {
        Configuration configuration = new Configuration().configure();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
                .applySettings(configuration.getProperties())
                .buildServiceRegistry();
        factory = configuration.buildSessionFactory(serviceRegistry);
    }

    public static Session getSession() {
        return factory.openSession();
    }
}

7.创建UserDao.java文件,对User进行增删改查操作

import com.model.User;
import com.utils.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class UserDao {
    public User getUserByID(int id)
    {
        Session session = HibernateUtil.getSession();
        User user = (User)session.get(User.class, id);
        session.close();
        return user;
    }

。。。
}

参考:

https://blog.csdn.net/weixin_40550726/article/details/83386210

看似有用, 但却多余,累赘的东西。

User.hbm.xml

hibernate.cfg.xm

 

 每个dao相关的类,都布满这种代码。确实看是类似,甚至一样,但又需要我们写。

然后我们就变成了代码的苦力,不断重复编写类似代码。

看回一、Bee入门实例, 跳出原来的局限, 你会豁然开朗,有种海阔凭鱼跃的感觉!

三、Mybatis入门例子

4、于resources文件夹中创建SqlMapConfig.xml




    
    
        
            
            
            
            
                
                
                
                
            
        
    

    
        
        
        

        
        
    

6.配置SQL查询的映射文件(resources目录)





    
    
        SELECT
          `id`,
          `username`,
          `birthday`,
          `sex`,
          `address`
        FROM `user`
        WHERe username LIKE '%${value}%'
    

    
        INSERT INTO USER (`username`,`birthday`,`sex`,`address`)
        VALUES (#{username},#{birthday},#{sex},#{address})
    

    
    
    

        
        

        INSERT INTO USER (`username`,`birthday`,`sex`,`address`)
        VALUES (#{username},#{birthday},#{sex},#{address})
    

    
    

        
        
             SELECT UUID()
        

        INSERT INTO USER (`username`,`birthday`,`sex`,`address`,`uuid`)
        VALUES (#{username},#{birthday},#{sex},#{address},#{uuid})
    

    
        UPDATE USER SET username = #{username} WHERe id = #{id}
    

    
        DELETE FROM `user` WHERe `id` = #{id}
    

7.加载映射文件,在SqlMapConfig.xml配置mappers节点

8.使用例子

package com.cenobitor;

import com.cenobitor.Utils.SqlSessionFactoryUtils;
import com.cenobitor.pojo.User;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
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.Date;
import java.util.List;


public class AppTest extends TestCase {
    //根据id查找用户
    public void testGetUserById() throws IOException {

        //创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        //查找配置文件,创建输入流
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //加载配置文件,创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sfb.build(inputStream);
        //创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行查询,参数一:要查询的statementId,参数二:sql语句入参
        User user = sqlSession.selectOne("user.getUserById", 1);
        //输入查询结果
        System.out.println(user);

        //释放资源
        sqlSession.close();
    }

    //根据用户名查找用户列表
    public void testGetUserByName(){
        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List list = sqlSession.selectList("user.getUserByName", "张");
        for (User user : list) {
            System.out.println(user);
        }

        sqlSession.close();
    }


...

}

9、抽取SqlSessionFactoryUtils工具类,共享SqlSessionFactory的对象

public class SqlSessionFactoryUtils {
    private SqlSessionFactoryUtils(){}

    private static class SqlSessionFactoryInstance{

        public static SqlSessionFactory sqlSessionFactory;

        static {
            try {
                sqlSessionFactory =  new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static SqlSessionFactory getSqlSessionFactory(){
        return SqlSessionFactoryInstance.sqlSessionFactory;
    }

}

参考:https://www.cnblogs.com/gdwkong/p/8734020.html

Mybatis需要

User.xml   

UserMapper.xml

UserMapper接口

而Bee  根据其它条件查询,无需提前准备接口,无需写sql

		Orders orders1=new Orders();
		orders1.setName("Bee");
		List list=suidRich.select(orders1);
		
		//Bee 根据其它条件查询,无需提前准备接口,无需写sql
		Orders orders2=new Orders();
		orders2.setUserid("myuserId");
		List list2=suidRich.select(orders2);

Bee可以做到:

智能化自动过滤null和空字符串,不再需要写判断非空的代码。

动态/任意组合查询条件,不需要提前准备dao接口,有新的查询需求也不用修改或添加接口。
复杂查询前后端可自动解析。

看回一、Bee入门实例, 跳出原来的局限, 你会豁然开朗,有种天高任鸟飞的感觉!

使用Bee, 不需要再写些多余的固定代码了, 让你不再是只会写CRUD的菜单,可以有更多的时间来学更加高级的技术!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696486.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号