MyBatis 环境搭建 (一)
一、MyBatis简介
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Mybatis的功能架构分为三层:
(1) API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2) 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3) 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。
为上层的数据处理层提供最基础的支撑。
二、环境搭建
1.创建项目
2.创建数据库、表
CREATE TABLE `user` (
`userId` int(11) NOT NULL AUTO_INCREMENT,
`loginName` varchar(25) NOT NULL,
`passWord` varchar(25) NOT NULL COMMENT '密码',
`userName` varchar(22) NOT NULL COMMENT '真实姓名',
`creatDate` datetime NOT NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=2015090005 DEFAULT CHARSET=utf8; INSERT INTO `user` VALUES ('', 'jalja', '', 'JALJA', '2015-09-05 21:46:59');
3.定义实体类(User.java)
package com.jalja.myBatis.model; import java.util.Date; public class User {
private int userId;
private String loginName;
private String passWord;
private String userName;
private Date creatDate;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getCreatDate() {
return creatDate;
}
public void setCreatDate(Date creatDate) {
this.creatDate = creatDate;
}
}
4、添加Mybatis的配置文件myBatis-data.xml 以及数据库配置文件jdbc.properties
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/blog
jdbc.username=root
jdbc.password=111111
myBatis-data.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>
<!-- 引用jdbc.properties配置文件 -->
<properties resource="com/jalja/myBatis/resources/jdbc.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
</configuration>
5.创建一个com.jalja.myBatis.model.mapper包,专门用于存放sql映射文件,在包中创建一个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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="com.jalja.myBatis.model.mapper。userMapper"就是com.jalja.myBatis.model.mapper(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="com.jalja.myBatis.model.mapper。userMapper">
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
User类就是users表所对应的实体类
-->
<!-- 根据id查询得到一个user对象 -->
<select id="findUserById" parameterType="int" resultType="com.jalja.myBatis.model.User">
select * from user where userId=#{userId}
</select>
<!-- 创建用户(Create) -->
<insert id="addUser" parameterType="com.jalja.myBatis.model.User">
insert into user(loginName,passWord,userName,creatDate) values(#{loginName},#{passWord},#{userName}, NOW())
</insert>
<!-- 修改用户(Update) -->
<update id="updateUser" parameterType="com.jalja.myBatis.model.User">
update user set loginName=#{loginName},passWord=#{passWord} where userId=#{userId}
</update>
<!-- 删除用户(Remove) -->
<delete id="deleteUser" parameterType="int">
delete from user where userId=#{userId}
</delete>
<!-- 查询全部用户-->
<select id="finaUsersAll" resultType="com.jalja.myBatis.model.User">
select * from user
</select>
</mapper>
6.在myBatis-data.xml 文件中注册userMapper.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>
<!-- 引用jdbc.properties配置文件 -->
<properties resource="com/jalja/myBatis/resources/jdbc.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments> <mappers>
<!-- 注册userMapper.xml文件, userMapper.xml位于com.jalja.myBatis.mapper这个包下,
所以resource写成com/jalja/myBatis/model/mapper/userMapper.xml-->
<mapper resource="com/jalja/myBatis/model/mapper/userMapper.xml"/>
</mappers>
</configuration>
7、创建sqlSession SqlSession对象的主要功能是完成一次数据库的访问和结果的映射,它类似于数据库的session概念,
由于不是线程安全的,所以SqlSession对象的作用域需限制方法内。SqlSession的默认实现类是DefaultSqlSession,
它有两个必须配置的属性:Configuration和Executor
package com.jalja.myBatis.util; import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisBaseUtil {
public static SqlSession getSqlSession() throws IOException{
String conf="com/jalja/myBatis/resources/myBatis-data.xml";
Reader reader = Resources.getResourceAsReader(conf);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession sqlSession = sessionFactory.openSession();
return sqlSession;
}
public static void closeSqlSession(SqlSession sqlSession){
if(sqlSession!=null){
sqlSession.close();
}
}
public static void main(String[] args) throws IOException {
System.out.println(getSqlSession());
}
}
8、测试
public List<User> finaUsersAll() {
String sql = "com.jalja.myBatis.model.mapper。userMapper.finaUsersAll";
SqlSession sqlSession=null;
List<User> list=null;
try {
sqlSession=MyBatisBaseUtil.getSqlSession();
list=sqlSession.selectList(sql);
System.out.println("finaUsersAll===>"+list.get(0).getLoginName());// jalja
} catch (IOException e) {
e.printStackTrace();
}finally{
MyBatisBaseUtil.closeSqlSession(sqlSession);
}
return list;
}
MyBatis 环境搭建 (一)的更多相关文章
- springmvc+mybatis环境搭建
1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...
- MyBatis -01- 初识 MyBatis + MyBatis 环境搭建
MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...
- MyBatis之MyBatis环境搭建
MyBatis之MyBatis环境搭建 一.MyBatis开发环境搭建 1.引入Jar包 ①MyBatis mybatis-3.4.1.jar ant-1.9.6.jar ant-launcher-1 ...
- Mybatis环境搭建中的案例分析 及 如果自己编写DAO接口的实现类
Mybatis环境搭建中的案例分析public static void main (String[] args) throws Exception { //读配置文件 //第一个: 使用类加载器,只能 ...
- MyBatis 环境搭建(四)
MyBatis 引言 在回顾JDBC时,我们已经创建有 Java 工程,而且也已经导入 mysql 依赖包,这里就直接在原有工程上搭建MyBatis环境,以及使用MyBatis来实现之前用 JDBC ...
- Mybatis环境搭建及测试
1.新建java project,导入相应jar包 本次使用到的mybatis-3.2.7版本 mybatis需要jar包:mybatis-3.2.7.jar.lib文件下的依赖jar mysql驱动 ...
- Spring日记_02之 json、javaBean、.do、MySql、MyBatis 环境搭建结束
JSON Json是JavaScript直接量语法 无参构造方法直接 Alt + \ 就可以提示添加 Project – Clean 浏览器向服务器发送请求,服务器中的Spring中的SpringMV ...
- mybatis 环境搭建和基本说明
mybatis介绍就不多提了,直接步入正题. 先准备好eclipse和MySQL,然后先看一下目录结构 文件和类很少,所以mybatis的搭建是非常简单的,如搭建中遇到问题可以先参考文档最后一部分的综 ...
- mybatis环境搭建和开发步骤
环境搭建 第一步:导入jar包 第二步:导入核心配置文件(mybatis-config.xml) <?xml version="1.0" encoding="UTF ...
随机推荐
- 第五章:Logistic回归
本章内容 □sigmod函数和logistic回归分类器 □最优化理论初步□梯度下降最优化算法□数据中的缺失项处理 这会是激动人心的一章,因为我们将首次接触到最优化算法.仔细想想就会发现,其实我们日常 ...
- ANSI C 所有的转义字符
\a 响铃符 \b 回退符 \f 换页符 \n 换行符 \r 回车符 \t 横向制表符 \v 纵向制表符 \\ 反斜杠 \? 问号 \' 单引号 \" 双引号 \000 八进制数 \xhh ...
- CentOS7使用阿里云镜像安装Mongodb
一.概述 近日要在新的CentOS系统上安装MongoDB,某度结果后直接从Mongo官网直接获得3.2版本的下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.切换国内的安装源后 ...
- Tableau:数据可视化之急速BI
1.我们通过数据可视化,是为了从数据中寻找什么呢?三个方面:模式.关系和异常.不管图形表现的是什么,我们都要留心观察这三者.
- Android 各层调用的方式
所有的android的app启动都有三种深入启动的方式: ①app——Runtime Service——Lib 这种启动方式是: Ⅰapp程序中启动application framework 层中Ru ...
- [Xamarin] 從Xamarin中呼叫 *.jar 的 library -建立.jar篇 (转帖)
嗯,這篇我們來聊聊如何從Xamarin 中來呼叫,已經包好的.jar ,首先因為要讓測試順利,我們開一個Android Java 的專案 當然是Eclipse ,然後我們簡簡單單寫一個測試用的libr ...
- 深入理解openstack网络架构(2)----Basic Use Cases
原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture1 译文转自: http:// ...
- Quartz.net(调度框架) 使用Mysql作为存储
最近公司的做的项目中涉及到配置任务地址然后按照配置去目标地址提取相关的数据,所以今天上午在Internet上查看有关定时任务(调度任务)的相关信息,筛选半天然后查找到Quartz.net. Quart ...
- 使用 Productivity Power Tools 高级扩展 来帮助你提高 VS2012 的工作效率
Productivity Power Tools 高级工具是帮助开发者提高工作效率的, 用于 Visual Studio 2012 专业版(及以上) 的一组免费扩展. 本文大多数内容译自MSDN:ht ...
- [你必须知道的NOSQL系列]专题一:MongoDB快速入门
一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...