MyBatis实战第一讲
来源:互联网 发布:数据库是按一定的结构 编辑:程序博客网 时间:2024/06/04 19:47
MyBatis实战第一讲
一.MyBatis简介
Hibernate是一个非常流行的全自动的持久层框架,同时它也有它自己框架本身存在的缺点:
(1)全表映射;
(2)无法根据不同的条件组装不同的SQL
(3)多表关联和复杂的SQL查询支持比较差,需要自己写SQL,返回时需要重新分装成自己所需要的实体类
(4)不能有效支持存储
(5)Hibernate虽然支持HQL查询,但是大型系统的复杂查询会需要优化SQL,这点Hibernate是做不到的。
针对以上的缺点,MyBatis一个半自动映射框架就诞生了。MyBatis配置是需要手工配置POJO,SQL和映射关系。
如下图(MyBatis的ORM的映射模型图):
二.MyBatis实例创建
1.新建一个Maven项目,总体架构如下图:
代码清单1:pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mybatis</groupId> <artifactId>mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mybatis</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.42</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>
代码清单2:mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 数据库相关属性文件,这里不写的话,也会自动加载 --> <properties resource="mybatis.properties"></properties> <!-- 环境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 数据库连接相关配置 ,这里动态获取mybatis.properties文件中的内容 --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 映射文件 ,我们还没有,这里什么都不写 --> <mappers> <mapper resource="com/xfx/dao/mapper/user.xml" /> </mappers></configuration>
代码清单3:mybatis.properties
driver = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/worldusername = rootpassword = root
代码清单4:User.java
public class User { private Integer id;//自动增长的ID private String name;//用户名 private String password;//密码 private String email;//邮箱 private Integer age;//年龄 private Integer gender;//性别,0-男 ; 1-女 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public void showMessage(){ System.out.println(this.id+" , "+this.name+" , "+this.password+" , "+this.email+" , "+this.age+" , "+this.gender); }}
代码清单5:IUserDao.java
import java.util.List;import com.xfx.entity.User;public interface IUserDao { public List<User> findAllUser();}
代码清单6:user.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xfx.dao.IUserDao"> <resultMap type="com.xfx.entity.User" id="baseMap"> <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> <result column="email" property="email" jdbcType="VARCHAR" /> <result column="gender" property="gender" jdbcType="INTEGER" /> <result column="age" property="age" jdbcType="INTEGER" /> </resultMap> <select id="findAllUser" resultType="com.xfx.entity.User"> SELECT id,name,password,email,gender,age FROM `user` </select></mapper>
为了使用MyBatis,我们还需要创建SqlSessionFactory,具体代码如下:
public class MybatisUtil { private static SqlSessionFactory sqlSessionFactory = null; public static SqlSessionFactory getSqlSessionFactory() { if (sqlSessionFactory == null) { try { sqlSessionFactory = new SqlSessionFactoryBuilder() .build(Resources.getResourceAsStream("mybatis-config.xml")); } catch (Exception e) { e.printStackTrace(); } } return sqlSessionFactory; }}
接下来就是去实现了,代码如下:
SqlSession session = null; try { session = MybatisUtil.getSqlSessionFactory().openSession(); IUserDao userDao = session.getMapper(IUserDao.class); List<User> users = userDao.findAllUser(); for(User user :users){ user.showMessage(); } } catch (Exception e) { e.printStackTrace(); }
总结:以上便完成了一个简单的Mybatis的项目的搭建工作,以及相关的代码实现工作。SQL和映射规则都是在XML里面进行了分离,你可以自由的编写SQL代码查询自己项目所需要的字段。此外MyBatis提供的接口编程的映射器需要一个接口和映射文件便可以运行。MyBatis具有高度的灵活性、可优化、易维护,支持动态列、动态表名、存储过程等,同时还提供了缓存、日志、级联。你可以根据自己项目的需求去选择合适的持久层框架。
- MyBatis实战第一讲
- 第一讲 MyBatis开端
- 【项目实战】基于Extjs+SpringMVC+Spring+Mybatis整合的进销存管理系统详解----项目简介(第一讲)
- javascript实战第一讲:聊天窗口
- MyBatis第一讲学习笔记,mybatis入门基础操作
- asp.net电子商务开发实战 视频 第一讲
- JQuery实战第一讲:验证用户名是否可用!
- Java开发实战第一讲-Tomcat环境搭建
- jquery实战第一讲---概述及其入门实例
- JQuery实战第一讲:概述、环境准备及入门实例
- 《接口自动化测试实战》第一讲 读取用例数据
- Creo实战系列-第一讲Creo有限元分析培训圆满落幕
- 第一讲
- 第一讲
- 第一讲
- 第92讲:Akka第一个案例动手实战开发环境的搭建,第93讲:Akka第一个案例动手实战开发消息实体类学习笔记
- 第82讲:Spark Streaming第一讲:案例动手实战并在电光石火间理解其工作原理
- 第一讲与第二讲
- spring 初始化ApplicationContext的几种方式
- Python基础-访问限制__变量名(private)
- structs2数据接收方式
- 原生adb限制
- HTTPS的APP如何抓包
- MyBatis实战第一讲
- Excel之Vlookup操作
- JAVASE之反射,properties初识
- 指针
- 数据结构学习-平衡二叉树
- Cmake编译caffe
- 点分法IP地址和网络二进制表示的转换
- 无名飞控
- 咸鱼日记12.13——第一行代码java