java 实现Mybatis入门
来源:互联网 发布:大数据股票龙头股 编辑:程序博客网 时间:2024/05/23 20:02
Mybatis+java入门
- Mybatisjava入门
- 导语
- 工具
- 搭建项目
- 配置Mybatis
导语
Mybatis是一个普遍应用的持久层框架,它封装了底层jdbc操作的复杂性,并提供了易用的api ,使我们能够吧java对象持久化到数据库中。这是我用java实现mybatis的例子。
工具:
maven intellij idea
spring boot
搭建项目
- 首先我我们用spring boot搭建一个maven项目。怎么搭建参考我的另外一篇文章
- 要用mybatis需要3个包
-mybatis的api包
org.mybatis mybatis 3.4.5
datasource包,就是数据源包,这里采用的dbcp数据源
org.apache.commons
commons-dbcp2
2.1.1
-mysql驱动包。
mysql
mysql-connector-java
创建测试类
ok,把这个3个包都倒入进去,那么就可以撸代码了。我们在工程下的test文件夹下面的java文件下建立一个测试包com.example.mybati文件夹。建立一个类MybatisTest.java用作测试用。如图所示
配置Mybatis
1.定义数据源
数据源datasource 是链接数据库的工具,
里面包含了链接数据库的账号 密码等。在数据源中又一个连接池每当你操作数据库的时候,
都是从这个池中拿到一个链接。上面我们提到了dbcp2包,他是datacorce的一个具体的实现。数据源有很多的实现。比如说 阿里的druid,dbcp2,dbcp,cp30等,各自有各自的优点,选择你需要的一个就可以了。这里我们用dbcp2作为数据源的实现类。在我们链接数据库的时候,基本属性需要数据库地址,用户名,密码,还有数据库
驱动包。代码如下
public DataSource dataSource(){ //实例化 dbcp2数据源 BasicDataSource dataSource = new BasicDataSource(); //设置数据库链接地址 dataSource.setUrl("jdbc:mysql:// 你的数据库地址/你的数据库名称"); dataSource.setUsername("你的账号"); dataSource.setPassword("你的密码"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); return dataSource; }
- 创建SqlSessionFactory 工厂类。
SqlSessionFactory这个接口看它的后缀就知道这是一个工厂类Factory,sqlsession的创建由sqlSessionFactory来管理。刚
才提到了sqlSessionFactory是一个接口,具体怎么创建的
sqlSession,是有sqlSessionFactory的具体实现类来实现的。至于为什么设计?直接new SqlSession()不就好了?具体请
看工厂方法类。在mybatis中默认的sqlSessionFactory实现类是DefaultSqlSessionFactory ,要实例化一个DefaultSqlSessionFactory 需要一个 Configuration的参数,那么接着看看看实例化一个Configuration需要
什么?需要一个Environment参数。接着看实例化Environment参数需要什么?我们看到需要 一个string 类型的id,TransactionFactory 事物工厂类,DataSource 数据源。那么我们按照上面所说的实例化
化一个 DefaultSqlSessionFactory 类。
private SqlSessionFactory sqlSessionFactory;@Beforepublic void init() { TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource()); Configuration configuration = new Configuration(environment); configuration.addMapper(OrderMapper.class); sqlSessionFactory = new DefaultSqlSessionFactory(configuration);}
这里@Before 注解在类运行前执行的方法。 这里datasource()就是第一步中我们得到的 数据源。这里还有一个
OrderMapper.class 这个我们先这样子写,后面我们会讲到,现在我们声明了一个sqlSessionFactory工厂
- 获得SqlSession
SqlSession是mybatis定义的,用来操作数据库的类,也可以理解为操作数据库的连接。下面我们要获取这个连接,来操作数
据库。
SqlSession sqlSession = sqlSessionFactory.openSession();
- 编写sql语句
我们从sqlSessionFatory中获取一个连接。
加入我们有这么个需求,查询Order表中的其中一条记录。我们的sql语句是 select * from t_order where order_id =1
mybatis中定义sql语句的方式有2种,一种是 放在xml种,另外一种是注解的方式放在接口中。我们这次采用的是注解的方式
我们需要定义一个接口类,创建一个接口类型的java文件。OrderMapper ,
public interface OrderMapper { @Select("SELECT * from t_order where t_order.order_id = #{id} ")Order selectById(int id);}
ok,上面的代码中,我们在接口中定义了一个方法,在方法中用 @Select() 包含了一条sql语句。@Select注解代表这是一个查
询,()中的内容就是查询的语句。也就是我们实际写的sql, #{id}在查询的时候会动态的替换成 Order selectById(int
id); 中的id字段。
这个类也就是我们第2步骤,configuration.addMapper(OrderMapper.class);这段代码中的OrderMapper类。
- 运行sql语句
mybatis是一个持久层框架,他用对象的方式封装的sql的查询。所以我们只需要调用 Order selectById(int id);
这个方法就可以实现查询sql了。那么要调用这个方法,必须要获取这个类,我们怎么获得OrderMapper这个类呢?
在第2步中我们 configuration.addMapper(OrderMapper.class);。意思是我们把 OrderMapper这个类放到了
sqlSession中,既然我们放进去了,当然就能取出来。
//java 版本查询
@Testpublic void demo() { //1 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //2获取查询类 OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class); //3执行查询类的方法 Order order = orderMapper.selectById(11);}
- 释放资源
当我们操作完了之后,需要释放掉我们创建的资源。
@Afterpublic void end() { sqlSession.close();}
7 完整代码
package com.example.mybatis;import com.example.mybatis.Mapper.OrderMapper;import com.example.mybatis.entity.Order;import org.apache.commons.dbcp2.BasicDataSource;import org.apache.ibatis.mapping.Environment;import org.apache.ibatis.session.Configuration;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;import org.apache.ibatis.transaction.TransactionFactory;import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;import org.junit.After;import org.junit.Before;import org.junit.Test;import javax.sql.DataSource;/** * Created with IntelliJ IDEA. * User: yf-wenhao * Date: 17/11/23 * Time: 下午3:10 */public class MybatisTest { private SqlSession sqlSession; public DataSource dataSource(){ //实例化 dbcp2数据源 BasicDataSource dataSource = new BasicDataSource(); //设置数据库链接地址 dataSource.setUrl("jdbc:mysql:// 你的数据库地址/你的数据库名称"); dataSource.setUsername("你的账号"); dataSource.setPassword("你的密码"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); return dataSource; } //1 获取sqlSessionFactory private SqlSessionFactory sqlSessionFactory; @Before public void init() { TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource()); Configuration configuration = new Configuration(environment); configuration.addMapper(OrderMapper.class); sqlSessionFactory = new DefaultSqlSessionFactory(configuration); } //java 版本查询 @Test public void demo() { //1 获取sqlSession sqlSession = sqlSessionFactory.openSession(); //2获取查询类 OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class); //3执行查询类的方法 Order order = orderMapper.selectById(11); } @After public void end() { sqlSession.close(); }}
- java 实现Mybatis入门
- Java:MyBatis简单入门
- MyBatis入门02 实现CRUD
- Java框架篇---Mybatis 入门
- Java框架篇---Mybatis 入门
- Java框架篇---Mybatis 入门
- Java框架篇---Mybatis 入门
- Java框架篇---Mybatis 入门
- Java框架篇---Mybatis 入门
- MyBatis入门04-实现关联表查询
- Mybatis入门(四):实现关联查询
- mybatis入门-实现基本CRUD操作
- MyBatis(一) 入门案例实现CRUD操作
- [Java][MyBatis]物理分页实现
- [Java][MyBatis]物理分页实现
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
- VIM/VI
- spring boot本地事物管理和分布式事物管理(五)
- linux 用户权限设置示例
- Thinkphp的list_to_tree 实现无限级分类列出所有节点
- fetch与formdata的故事
- java 实现Mybatis入门
- vue-resource emulateJSON
- ansible的运用
- apply、call的区别和使用
- 浅谈总线通信机制----USB学习指南与总结
- cadence vmanager(四)vmanager软件使用介绍
- hdu身份证验证(17新生赛)
- CSDN-markdown编辑器示例
- 关于Sturts2在校验不通过的情况下出现报错no result defined for action result input