MyBatis是持久化层框架(SQL映射框架)-操作数据库

1、环境搭建

1)、创建一个java工程;

2)、创建测试库,测试表,以及封装数据的javaBean,和操作数据库的dao接口

创建表:自己用工具创建

创建javaBean:Employee(封装表的数据)

Employee.java

package com.atguigu.bean;public class Employee {private Integer id;private String empName;private String email;private Integer gender;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}/* (non-Javadoc)* @see java.lang.Object#toString()*/@Overridepublic String toString() {return "Employee [id=" + id + ", empName=" + empName + ", email="+ email + ", gender=" + gender + "]";}
}

创建一个Dao接口,用来操作数据库;



3、用MyBatis操作数据库?

1、导包

 建议导入日志包;在mybatis关键的环节就会有日志打印;

       log4j(日志框架);依赖类路径下一个log4j.xml配置文件;


2、写配置(两个,全局配置文件(指导mybatis运行的)dao接口的实现文件(描述dao中每个方法怎么工作)

1)、第一个配置文件;(称为mybatis的全局配置文件,指导mybatis如何正确运行,比如连接向哪个数据库)

2)、第二个配置文件:(编写每一个方法都如何向数据库发送sql语句,如何执行。。。。相当于接口的实现类)

1)、将mapper的namespace属性改为接口的全类名

2)、配置细节

两个文件:

1)、全局配置文件:mybatis-config.xml;指导mybatis正确运行的一些全局设置;

2)、SQL映射文件:EmployeeDao.xml;相当于是对Dao接口的一个实现描述



细节:

1)、获取到的是接口的代理对象;mybatis自动创建的;

2)、SqlSessionFactory和SqlSession

SqlSessionFactory创建SqlSession对象,Factory只new一次就行

SqlSession:相当于connection和数据库进行交互的,和数据库的一次会话,就应该创建一个新的sqlSession;




Employee.java

package com.atguigu.bean;public class Employee {private Integer id;private String empName;private String email;private Integer gender;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}@Overridepublic String toString() {return "Employee [id=" + id + ", empName=" + empName + ", email="+ email + ", gender=" + gender + "]";}
}

EmployeeDao.java

package com.atguigu.dao;import com.atguigu.bean.Employee;public interface EmployeeDao {//按照员工id查询员工public Employee getEmpById(Integer id);
}

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><!-- 配置连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis_0325"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 引入我们自己编写的每一个接口的实现文件 --><mappers><!--resource:表示从类路径下找资源  --><mapper resource="mybatis/EmployeeDao.xml"/></mappers></configuration>

EmployeeDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名称空间;写接口的全类名,相当于告诉MyBatis这个配置文件是实现哪个接口的;  -->
<mapper namespace="com.atguigu.dao.EmployeeDao"><!-- public Employee getEmpById(Integer id); --><!-- select:用来定义一个查询操作   id:方法名,相当于这个配置是对于某个方法的实现 resultType:指定方法运行后的返回值类型;(查询操作必须指定的)#{属性名}:代表取出传递过来的某个参数的值--><select id="getEmpById" resultType="com.atguigu.bean.Employee">select * from t_employee where id=#{id}</select>
</mapper>

MyBatisTest.java

package com.atguigu.test;import java.io.IOException;
import java.io.InputStream;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 org.junit.Test;import com.atguigu.bean.Employee;
import com.atguigu.dao.EmployeeDao;public class MyBatisTest {@Testpublic void test() throws IOException {//1、根据全局配置文件创建出一个SqlSessionFactory//SqlSessionFactory:是SqlSession工厂,负责创建SqlSession对象;//SqlSession:sql会话(代表和数据库的一次会话);String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);Employee employee;//2、获取和数据库的一次会话;getConnection();SqlSession openSession=sqlSessionFactory.openSession();try {//3、使用SqlSession操作数据库,获取到dao接口的实现EmployeeDao employeeDao = openSession.getMapper(EmployeeDao.class);//4、调用之前的方法employee = employeeDao.getEmpById(1);} finally{openSession.close();}System.out.println(employee);}
}

MyBatis是持久化层框架(SQL映射框架)-操作数据库相关推荐

  1. MyBatis简介——半自动的持久化层框架(SQL映射框架)|| 支持定制化sql

    MyBatis简介 1.MyBatis:和数据库进行交互:持久化层框架(SQL映射框架): 1).从原始的JDBC-----dbutils(QueryRunner)-------JdbcTemplat ...

  2. ci如何使用中$.ajax 中的 url 如何使用php的代码,CI框架中使用ajax操作数据库有关问题...

    CI框架中使用ajax操作数据库问题 本帖最后由 A9925 于 2014-11-24 16:11:05 编辑 前台: //调用方法用ajax操作add_dbdata.php var xmlHttp ...

  3. SpringBoot项目集成Mybatis Plus(四)SQL映射文件

    实际使用中,都会用到自定义SQL查询语句,并且需要支持分页,因为之前在项目中配置了分页插件,所以用起来很简单. 例如,定义接口getList,接口参数为分页参数和查询条件, @RequestMappi ...

  4. MyBatis(3):SQL映射

    前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: 1 2 3 4 5 6 7 8 9 10 11 <?xml ...

  5. MyBatis 3(2)实体映射 CRUD 操作(XML/注解方式)

    MyBatis 实体映射 Mybatis 配置数据映射主要有 2 种方式,通过 XML 配置文件进行,通过注解进行: Mybatis 对于实体映射是通过接口调用的方式,在底层上使用 Java 的动态代 ...

  6. Asp.Net MVC 自定义的MVC框架(非EF操作数据库)

    一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...

  7. 神兵利器——使用LINQ to SQL检索和操作数据库

    自.NET 3.0开始,LINQ(Language Integrated Query,整合查询语言)便逐渐出现在.NET开发的各个角落,它不仅提供了一种用于快速检索结构化标记语言(如XML)的方法,而 ...

  8. Python轻量级WEB框架web.py之操作数据库

    以MYSQL做示例: pip install pymysql 如果安装超时或其他原因不成功,选择下面的站点来安装 pip install -i https://pypi.douban.com/simp ...

  9. 数据库封装 sql server mysql_mysql操作数据库进行封装实现增删改查功能

    SqlTool.class.php class SqlTool{ private $conn; private $host = "localhost"; private $user ...

最新文章

  1. Java并发编程:阻塞队列
  2. 关于vscode的插件配置
  3. ubuntu将GNU nano换成vim
  4. NeuralBuild-用于Java、C#、PHP的DAO产生器
  5. lisp方格网法计算土方量_CAD土方软件方格网法与三角网法相结合,准确计算土方量...
  6. 检测和语义分割_分割和对象检测-第1部分
  7. 电脑怎么换自己的壁纸_怎么才能给自己的爱机一个合理的价格—想把自己电脑回收的...
  8. 从Bayes角度理解Deep learning
  9. Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成
  10. python vector 初始化_一文带你走进Python中的数据类
  11. 23种设计模式JAVA案例
  12. 职场:因抢一个月饼,惨遭阿里开除,如今他把生活过成这样
  13. 实例011:养兔子 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  14. 免校准的电量计量芯片_免校准电能计量芯片,让家电智能化更简单
  15. javascript-BOM-页面加载事件
  16. 【题解】PAT (Basic Level) Practice (中文)
  17. Win10数字小键盘按键变成方向键怎么办?Win10数字小键盘按键变为方向键解决方法
  18. php header 生成pdf,使用PHP生成PDF文档
  19. 看了一遍蝴蝶效应1,在看到了一篇很好的《蝴蝶效应1》影评
  20. react 返回上一页

热门文章

  1. 韩顺平循序渐进学java 第19讲 多维数组
  2. springmvc+mybatis+mysql+maven
  3. 看服务器是不是虚拟机
  4. 网站性能分析(下)-让网站并行加载但顺序执行JS
  5. WinCE 应用程序开机自动方法
  6. python queue模块安装_Python queue包_程序模块 - PyPI - Python中文网
  7. python-字符串常用方法、文件简单读写
  8. python机器学习实战(一)
  9. SDUT-2449_数据结构实验之栈与队列十:走迷宫
  10. java从Object类型转换成double类型