MyBatis是持久化层框架(SQL映射框架)-操作数据库
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映射框架)-操作数据库相关推荐
- MyBatis简介——半自动的持久化层框架(SQL映射框架)|| 支持定制化sql
MyBatis简介 1.MyBatis:和数据库进行交互:持久化层框架(SQL映射框架): 1).从原始的JDBC-----dbutils(QueryRunner)-------JdbcTemplat ...
- ci如何使用中$.ajax 中的 url 如何使用php的代码,CI框架中使用ajax操作数据库有关问题...
CI框架中使用ajax操作数据库问题 本帖最后由 A9925 于 2014-11-24 16:11:05 编辑 前台: //调用方法用ajax操作add_dbdata.php var xmlHttp ...
- SpringBoot项目集成Mybatis Plus(四)SQL映射文件
实际使用中,都会用到自定义SQL查询语句,并且需要支持分页,因为之前在项目中配置了分页插件,所以用起来很简单. 例如,定义接口getList,接口参数为分页参数和查询条件, @RequestMappi ...
- MyBatis(3):SQL映射
前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的: 1 2 3 4 5 6 7 8 9 10 11 <?xml ...
- MyBatis 3(2)实体映射 CRUD 操作(XML/注解方式)
MyBatis 实体映射 Mybatis 配置数据映射主要有 2 种方式,通过 XML 配置文件进行,通过注解进行: Mybatis 对于实体映射是通过接口调用的方式,在底层上使用 Java 的动态代 ...
- Asp.Net MVC 自定义的MVC框架(非EF操作数据库)
一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...
- 神兵利器——使用LINQ to SQL检索和操作数据库
自.NET 3.0开始,LINQ(Language Integrated Query,整合查询语言)便逐渐出现在.NET开发的各个角落,它不仅提供了一种用于快速检索结构化标记语言(如XML)的方法,而 ...
- Python轻量级WEB框架web.py之操作数据库
以MYSQL做示例: pip install pymysql 如果安装超时或其他原因不成功,选择下面的站点来安装 pip install -i https://pypi.douban.com/simp ...
- 数据库封装 sql server mysql_mysql操作数据库进行封装实现增删改查功能
SqlTool.class.php class SqlTool{ private $conn; private $host = "localhost"; private $user ...
最新文章
- Java并发编程:阻塞队列
- 关于vscode的插件配置
- ubuntu将GNU nano换成vim
- NeuralBuild-用于Java、C#、PHP的DAO产生器
- lisp方格网法计算土方量_CAD土方软件方格网法与三角网法相结合,准确计算土方量...
- 检测和语义分割_分割和对象检测-第1部分
- 电脑怎么换自己的壁纸_怎么才能给自己的爱机一个合理的价格—想把自己电脑回收的...
- 从Bayes角度理解Deep learning
- Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成
- python vector 初始化_一文带你走进Python中的数据类
- 23种设计模式JAVA案例
- 职场:因抢一个月饼,惨遭阿里开除,如今他把生活过成这样
- 实例011:养兔子 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 免校准的电量计量芯片_免校准电能计量芯片,让家电智能化更简单
- javascript-BOM-页面加载事件
- 【题解】PAT (Basic Level) Practice (中文)
- Win10数字小键盘按键变成方向键怎么办?Win10数字小键盘按键变为方向键解决方法
- php header 生成pdf,使用PHP生成PDF文档
- 看了一遍蝴蝶效应1,在看到了一篇很好的《蝴蝶效应1》影评
- react 返回上一页