首页 课程 师资 教程 报名

MyBatis入门教程

  • 2022-06-01 10:14:54
  • 1350次 星辉

MyBatis

MyBatis是一个 Java 持久性框架,它使用 XML 描述符或注释将对象与存储过程或 SQL 语句耦合在一起。与 ORM 框架不同,MyBatis 不会将 Java 对象映射到数据库表,而是将 Java 方法映射到 SQL 语句。MyBatis 允许使用所有数据库功能,如存储过程、视图、任何复杂性的查询和供应商专有功能。

使用 MyBatis 的好处是:

开箱即用的表/查询缓存

减少大部分 JDBC 样板文件

提高生产力

SQL 代码与 Java 类的分离

MyBatis Java 配置

可以在不使用 XML 的情况下在纯 Java 中配置 MyBatis。在下面的示例中,我们将找出表中的书籍数量。

包 com.zetcode.map;
导入 org.apache.ibatis.annotations.Select; 
公共接口 MyMapper { 
    @Select("SELECT COUNT(*) FROM MyBooks") 
    public int getNumberOfBooks(); 
}

MyMapper包含计算表中行数的 SQL 代码MyBooks。

包 com.zetcode.jconfig;
导入 java.util.Properties;
导入 javax.sql.DataSource;
导入 org.apache.ibatis.datasource.DataSourceFactory;
导入 org.apache.ibatis.datasource.pooled.PooledDataSource;
公共类 MyDataSourceFactory 实现 DataSourceFactory {     
    private Properties prop; 
    @Override
    公共数据源 getDataSource() { 
        PooledDataSource ds = new PooledDataSource();         
        ds.setDriver(prop.getProperty("driver")); 
        ds.setUrl(prop.getProperty("url")); 
        ds.setUsername(prop.getProperty("user")); 
        ds.setPassword(prop.getProperty("密码"));         
        返回 ds; 
    }
    @Override 
    public void setProperties(Properties prprts) {          
        prop = prprts; 
    } 
}

MyDataSourceFactoryPooledDataSource 从给定的属性创建一个。PooledDataSource是一个简单的、同步的、线程安全的数据库连接池。

包 com.zetcode.client; 
导入 com.zetcode.jconfig.MyDataSourceFactory;
导入 com.zetcode.jconfig.MyMapper;
导入 java.io.IOException;
导入 java.util.Properties;
导入 javax.sql.DataSource;
导入 org.apache.ibatis.mapping.Environment;
导入 org.apache.ibatis.session.Configuration;
导入 org.apache.ibatis.session.SqlSession;
导入 org.apache.ibatis.session.SqlSessionFactory;
导入 org.apache.ibatis.session.SqlSessionFactoryBuilder;
导入 org.apache.ibatis.transaction.TransactionFactory;
导入 org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
公共类 MyBatisJavaConfClient {
    私有静态 SqlSessionFactory sesFact = null;
    public static void main(String[] args) throws IOException { 
        Properties prop = new Properties(); 
        prop.setProperty("驱动程序", "com.mysql.jdbc.Driver"); 
        prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb"); 
        prop.setProperty("user", "testuser"); 
        prop.setProperty("密码", "test623");         
        MyDataSourceFactory mdsf = new MyDataSourceFactory(); 
        mdsf.setProperties(prop); 
        数据源 ds = mdsf.getDataSource();         
        TransactionFactory trFact = new JdbcTransactionFactory(); 
        环境 environment = new Environment("development", trFact, ds);
        config.addMapper(MyMapper.class);         
        sesFact = new SqlSessionFactoryBuilder().build(config); 
        尝试(SqlSession session = sesFact.openSession()) {             
            int numOfBooks = session.selectOne("getNumberOfBooks"); 
            System.out.format("有 %d 本书", numOfBooks); 
        } 
    } 
}

在MyBatisJavaConfClient,我们使用 Java 代码配置 MyBatis,构建 SQL 会话,并执行getNumberOfBooks()方法。

属性 prop = new Properties(); 
prop.setProperty("驱动程序", "com.mysql.jdbc.Driver"); 
prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb"); 
prop.setProperty("user", "testuser"); 
prop.setProperty("密码", "test623");

这里我们设置数据库属性。

MyDataSourceFactory mdsf = new MyDataSourceFactory(); 
mdsf.setProperties(prop); 
数据源 ds = mdsf.getDataSource();

我们通过获取数据源MyDataSourceFactory。

TransactionFactory trFact = new JdbcTransactionFactory(); 
环境 environment = new Environment("development", trFact, ds); 
配置配置 = 新配置(环境);
config.addMapper(MyMapper.class);

此代码替换 XML 配置。我们使用JdbcTransactionFactory、 Environment和Configuration类。

sesFact = new SqlSessionFactoryBuilder().build(config);

类的实例Configuration被传递给SqlSessionFactoryBuilder's build()方法。

以上就是关于“MyBatis入门教程”的介绍,大家如果想了解更多相关知识,不妨来关注一下星辉的Mybatis视频教程,里面的课程内容细致全面,通俗易懂,适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交