讲给Android程序员看的前端系列教程(40集免费视频教程+源码)
版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
ORM模型
简单地说,ORM模型就是数据库的表与简单Java对象(Plain Ordinary Java Object,简称 POJO)的对象关系映射模型(Object Relational Mapping 简称ORM),它主要解决数据库数据和POJO对象的相互映射。在本系列教程中,我们将详细介绍轻量级的ORM框架MyBatis。
MyBatis概述
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
The MyBatis SQL mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping tools.
MyBatis对JDBC操作数据库的过程进行了封装,使开发者只需要关注SQL本身,而不需要开发人员花费大量的精力去处理例如注册驱动、创建connection、创建statement、手动设置参数等JDBC操作。之前,当我们使用JDBC持久化的时候,sql语句被硬编码到java代码中,耦合度太高代码不易于维护;一旦我们修改了Java代码就需要对项目进行重新的编译、打包、发布。MyBatis将sql语句和java代码分开,功能边界清晰;前者专注于数据,后者侧重于业务。
MyBatis入门示例
在此,我们以示例的形式介绍MyBatis的入门示例,详细步骤如下:
第一步:数据准备
创建数据库mybatisDatabase和表user
DROP DATABASE IF EXISTS mybatisDatabase;
CREATE DATABASE mybatisDatabase;
use mybatisDatabase;
CREATE TABLE user(
id INT primary key auto_increment,
username VARCHAR(50),
password VARCHAR(50),
gender VARCHAR(10)
);
INSERT INTO user(username,password,gender) VALUES("lucy","123456","female");
INSERT INTO user(username,password,gender) VALUES("momo","234567","female");
INSERT INTO user(username,password,gender) VALUES("xixi","345678","female");
INSERT INTO user(username,password,gender) VALUES("pepe","456123","female");
SELECT * FROM user;
第二步:创建Java项目
创建普通Java项目并在该项目下新建config和lib文件夹
创建文件完毕后请对config执行Build Path,图示如下:
第三步:User
请在cn.com.pojo创建User类
package cn.com.pojo;
public class User {
private int id;
private String username;
private String password;
private String gender;
public User() {
}
public User(int id, String username, String password, String gender) {
this.id = id;
this.username = username;
this.password = password;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", gender=" + gender + "]";
}
}
该User类中各属性值与user表尽量保持一致。
第四步:添加jar包
请添加以下jar包并Build Path
- log4j-1.2.17.jar
- mybatis-3.4.1.jar
- mysql-connector-java-5.1.7-bin.jar
第五步:log4j.properties
请在config文件夹中创建log4j.properties并编写其配置,内容如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
第六步:mybatis-config.xml
在config文件夹中创建mybatis的核心配置文件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>
<!-- 配置数据源 -->
<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/mybatisDatabase"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
该配置文件environments标签主要用于配置数据库相关信息。至于,mybatis-config.xml文件中的其它常用配置,我们在后续的教程中会提到。
第七步:UserMapper.xml
在User的同级目录中创建映射文件UserMapper.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="cn.com.pojo.User">
<select id="selectUserById" parameterType="int" resultType="cn.com.pojo.User">
select id,username,password,gender from user where id = #{id}
</select>
</mapper>
该mapper的核心功能为:从数据库中查询数据并将查询结果封装成JavaBean对象。
在该配置文件中:
- namespace表示该mapper的命名空间,其取值为JavaBean的全类名或Mapper接口的全类名
- select标签表示select语句。其中,id属性用于为sql语句配置唯一标识;parameterType属性用于表示输入参数的类型,一般来说可以省略该属性,但是,如果参数是pojo建议不省略;resultType属性用于指定执行select查询语句之后每行记录对应的JavaBean对象的全类名。
- 在mapper.xml中使用#{ }表示占位符,类似于JDBC中的占位符?
在完成UserMapper.xml的编写后,再在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>
<!-- 配置数据源 -->
<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/mybatisDatabase"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper -->
<mappers>
<mapper resource="cn/com/pojo/UserMapper.xml"/>
</mappers>
</configuration>
通过mappers标签配置各mapper。在mapper标签中使用resource属性指定mapper的路径,其形式为斜杠形式的全路径。
第八步:测试
代码如下:
package cn.com.test;
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 cn.com.pojo.User;
/**
* 本文作者:谷哥的小弟
* 博客地址:http://blog.csdn.net/lfdfhl
*/
public class MybatisTest {
@Test
public void testMybatis() {
SqlSession sqlSession = null;
try {
// 读取mybatis的核心配置文件mybatis-config.xml
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 通过SqlSessionFactoryBuilder解析配置文件获取sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
// 通过SqlSessionFactory对象创建SqlSession对象
sqlSession = sqlSessionFactory.openSession();
// 利用selectOne()执行查询
User user = sqlSession.selectOne("cn.com.pojo.User.selectUserById", 1);
System.out.println(user);
} catch (Exception e) {
} finally {
// 关闭SqlSession
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
要点概述:
- 1、通过org.apache.ibatis.io.Resources读取mybatis的核心配置文件mybatis-config.xml
- 2、通过SqlSessionFactoryBuilder对象生成sqlSessionFactory对象
- 3、通过SqlSessionFactory对象创建SqlSession对象。该对象的作用类似于JDBC中的Connection对象,所以在执行完数据库操作后需对其进行关闭操作。
- 4、通过SqlSession的selectOne( )方法执行返回结果只有一条记录的sql查询语句。该方法第一个参数将要执行的sql语句,其格式为:命名空间.sql语句的id值;该方法第二参数为替换sql语句中占位符的参数值。
- 5、执行完查询操作后关闭SqlSession。
结果如下:
MyBatis入门示例总结
- 1、mybatis-config.xml是mybatis的核心配置文件
- 2、mapper.xml用于定义与数据库相关的sql语句
- 3、SqlSession用于执行数据库操作
Eclipse中关联MyBatis源码
为在开发过程中便捷查看MyBatis源码,我们需要在Eclipse对其进行关联。
第一步
下载源码并存放至本地,图示如下:
第二步
在Eclipse的项目中找到mybatis-3.4.1.jar,图示如下:
第三步
选中mybatis-3.4.1.jar右键选择Properties后再添加刚才下载好的源码文件mybatis-3.4.1-src.zip,图示如下:
最后,单击 Apply and Close即可。
转载:https://blog.csdn.net/lfdfhl/article/details/103230553