在我们学jdbc技术的时候,sql语句是嵌入到java代码里面的,好处就是简单方便;其实这种高度耦合、硬编码的方式是不利于sql语句的优化。经常用于和mybatis对比的就是Hibernate框架。 mybatis下载地址:https://github.com/mybatis/mybatis-3 1、创建MyBatis全局配置文件 2、创建JavaBean和数据库表 3、创建SQL映射文件 4、测试查询表(Employee)中的数据 查询结果:
一、Mybatis的第一印象
Hibernate框架是一个全自动全映射ORM(Object Relation Mapping)框架,目的就是消除sql语句,由该框架自己来发送,把下图中黑色部分全部封装起来,开发人员只需要知道一个JavaBean对应一个数据库表,这也暴露了它的缺点,就是不利于sql语句的优化,如果使用该框架并且还要定制化sql语句,就需要开发人员熟悉掌握HQL。
Mybatis的出现:很好的解决了上述问题,虽然还是黑箱操作,但是通过xml配置文件把编写sql语句的工作交给了开发人员,可以做到对sql语句的优化。
二、Mybatis的使用
mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html
可以直接从官方文档里copy过来,修改一下4个value的值。还要注意修改sql语句映射文件的路径,resource=“EmployeeMapping.xml”,把sql语句的配置文件和框架关联起来。<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://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"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="EmployeeMapping.xml"/> </mappers> </configuration>
数据库表的字段根据JavaBean来写就好。public class Employee { private String id; private String name; private String gender; private String email; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", " + "gender=" + gender + ", email=" + email + "]"; } }
namespace:名称空间。可以随便取,一般是某个包名
id:唯一标识,用来告诉mybatis执行哪个位置的sql语句
resultType:返回值类型。返回的是实体类和数据库表对应的对象,所以是类型就是实体类(Employee)
#{id}:从传递过来的参数中取出id值<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hr.EmployeeMapper"> <select id="selectEmployee" resultType="com.hr.bean.Employee"> select * from employee where id = #{id} </select> </mapper>
class mybatisTest { @Test void test() throws IOException { //获取 Mybatis全局配置文件路径 String resource = "mybatis_conf.xml"; //通过输入流加载xml配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); //利用xml配置文件创建一个SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //使用SqlSessionFactory(工厂)获取一个sqlSession对象,使用它来进行增删改查 SqlSession openSession = sqlSessionFactory.openSession(); try { //使用sqlSession对象可以执行已经映射的sql语句 //第一个参数sql映射文件里的唯一标识id(selectEmployee),避免与别的文件标签里的id冲突,通常使用 namespace + id //第二个参数是sql语句需要传递进去的参数,参数类型是Object,什么类型都能传,但是不符合sql语句要求的,返回的对象是null //返回的是数据库表对应的JavaBean对象 Employee employee = openSession.selectOne("com.hr.EmployeeMapper.selectEmployee", 1); System.out.println(employee); } catch (Exception e) { e.printStackTrace(); }finally { openSession.close();//关闭资源 } } }
项目结构图:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算