mybatis(基础及其搭建)

声明:该文章及该分类中的内容均基于正在开发的项目和一本参考书(深入浅出MyBatis技术原理与实战    by 杨开振)

一、mybatis核心组件(简要介绍)

SqlSessionFactoryBuilder(构造器):根据配置信息或代码生成SqlSessionFactory(工厂接口);

SqlSessionFactory:依靠工厂生成SqlSession(会话);

SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口;主要用途:1.获取映射器,2.直接通过命名信息执行SQL;

SQLMapper:由一个Java接口和XML文件(或注解)构成,需给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。

  

二、构建SqlSessionFactory(开始搭建)

有两种构建方式:1.xml配置;2.代码方式

建议使用XML方式:避免重复编译代码,也方便配置人员修改

简易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><!-- org.apache.ibatis.session.Configuration -->
<!-- 属性 -->
<properties resource="jdbc.properties"/>
<settings/> <!--设置 -->
<!-- 类型命名 定义别名-->
<typeAliases>
<typeAlias alias="role" type="com.standard.model.Role"/>
</typeAliases>
<typeHandlers/><!--类型处理器 -->
<objectFactory/><!-- 对象工厂 -->
<plugins/><!--插件 -->
<environments default="development"><!-- 配置环境 -->
<environment id="development"><!-- 环境变量 -->
<transactionManager type="JDBC"><!--采用JDBC 事务管理器 -->
<property name="autoCommit" value="false"/>
</transactionManager>
<!-- 数据源 -->
<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>
<databaseIdProvider/><!--数据库厂商标识 -->
<mappers><!-- 映射器 -->
<mapper resource="com/standard/dao/UserMapper.xml"/>
</mappers>
</configuration>

注意:

<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

  下面配置映射器时,这个地方有区别

  database在jdbc.properties中读取:

 driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root

注:mybatis的解析程序会将mybatis-config.xml文件配置的信息解析到Configuration类对象里面,然后利用SqlSessionFactoryBuilder读取这个对象为我们创建SqlSessionFactory。

三、创建SqlSession

以下是封装好的工具类,打个util类直接使用

 public class SqlSessionFactoryUtil {

     //类线程锁
private static final Class CLASS_LOCK =SqlSessionFactoryUtil.class;
//私有化构造参数
//防止使用者使用new的方式创建多个对象
private SqlSessionFactoryUtil(){ } //构建SqlSessionFactory 实现单例
static SqlSessionFactory sqlSessionFactory=null; public static SqlSessionFactory initSqlSessionFactory(){
InputStream iStream = null;
//sqlSessionFactory对象
SqlSession sqlSession=null; //读入配置流文件 加载核心配置文件 try{
iStream=Resources.getResourceAsStream("mybatis-config.xml");
}catch(IOException e){
// TODO Auto-generated catch block
System.out.println("--"+e);
e.printStackTrace();
} synchronized (CLASS_LOCK) {//避免在多线程环境中,多次初始化造成对象的不唯一
if(sqlSessionFactory==null){
//获取SQLSessionFactory
sqlSessionFactory=new SqlSessionFactoryBuilder().build(iStream);
} }
return sqlSessionFactory;
} //打开SqlSession
public static SqlSession openSqlSession(){
if(sqlSessionFactory==null){
initSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}

四、映射器(接口+XML注解)

实现方式有两种:1.通过XML文件方式实现(推荐使用)

           2.通过代码方式实现:在Configuration里面注册Mapper接口(需要写入Java注解),较为复杂。

  先给出接口:UserMapper.java(xml方式)

 public interface UserMapper {
int insert(User record);
List<User> select();
}

  然后给出映射文件: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="com.standard.dao.UserMapper"> <resultMap id="BaseResultMap" type="com.standard.model.User">
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="ACCOUNT" jdbcType="VARCHAR" property="account" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="PASSWORD" jdbcType="VARCHAR" property="password" />
<result column="ROLE_ID" jdbcType="INTEGER" property="roleId" /> </resultMap>
<sql id="Base_Column_List">
ID, ACCOUNT, NAME, PASSWORD, ROLE_ID
</sql> <select id="select" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from STANDARD_USER
</select>

注意:

 <?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">

  可以同上边提到的mybatis-config.xml配置比较此部分内容,对小白理解mybatis或许会有帮助

五、最后测试一下

  先展示一下POJO: User.java

public class User{
private Integer id; private String account; private String name; private String password; private Integer roleId; private Role role; //get set 方法省略...

  然后写个测试类

public class UserTest {

    static SqlSession sqlSession=null;
static UserMapper userMapper;
public static void main(String[] args ) {
try{
sqlSession=SqlSessionFactoryUtil.openSqlSession();
userMapper=sqlSession.getMapper(UserMapper.class);
UserTest userTest=new UserTest();
//插入
int i =userTest.insert();
System.out.println(i);
sqlSession2.commit(); }catch(Exception e){
System.err.println("---"+e.getMessage());
sqlSession.rollback();
}finally{
if(sqlSession!=null){
sqlSession.close();
}
}
}
public int insert(){
User user=new User();
user.setId(9);
user.setName("小白");
user.setAccount("admin");
user.setPassword("123456");
user.setRoleId(1);
int i = userMapper.insert(user);
return i;
}
}

最后就完成了一次插入数据库操作。

小白刚刚起步,欢迎吐槽~~

(一)mybatis简易搭建的更多相关文章

  1. Pritunl:简易搭建个人VPN及年费200的超编译独立主机 BandwagonHost

    https://pao-pao.net/article/213 Pritunl:简易搭建个人VPN 文/ Vergil 一 直以来安装 VPN 服务.提供全局加密代理,是租用VPS(虚拟主机)的一个重 ...

  2. mybatis框架搭建学习初步

    mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default=& ...

  3. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  4. mybatis的搭建和注入spring的方式

    mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库. 与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql ...

  5. Spring+Mybatis+Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

  6. springmvc+mybatis环境搭建

    1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...

  7. mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)

    继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...

  8. MyBatis -01- 初识 MyBatis + MyBatis 环境搭建

    MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...

  9. MyBatis之MyBatis环境搭建

    MyBatis之MyBatis环境搭建 一.MyBatis开发环境搭建 1.引入Jar包 ①MyBatis mybatis-3.4.1.jar ant-1.9.6.jar ant-launcher-1 ...

随机推荐

  1. curl命令简介

    curl 文件传输工具 参数: -c --cokie-jar: 将cookie写入到文件 -b --cokie: 从文件中读取cookie -C --continue-at: 断点续传 -d --da ...

  2. ES6 find()

    Array.prototype.find() 返回数组中满足提供测试函数的第一个元素的值,否则返回undefined let b = blogs.find(function(e) => { re ...

  3. React 渲染嵌套对象,内部对象会是undefined

    在编译器中获取数据 发现报错 原因: render()一加载就会渲染,渲染的数据是初始state里的值 ,当setState会再次渲染 解决方法 1.三元运算 判断对象是否存在 2.在初始化对象的时候 ...

  4. 刷题41. First Missing Positive

    一.题目说明 题目是41. First Missing Positive,求一个未排序队列中缺失的最小正整数.时间复杂度要求是O(n).难度是Hard,确实难. 二.我的解答 不考虑时间复杂度,首先对 ...

  5. LAMP环境搭建,防火墙开启,数据库挂载在逻辑卷

    具体要求: 1. 源码部署 LAMP 环境, 和生产保持一致 2. 静态资源文件同步生产环境 3. 需要同时部署 2 个 web 网站 步骤: 一. 需要的安装包. 提前准备好. apr-util-1 ...

  6. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:将MNIST手写图片数据写入TFRecord文件

    import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_dat ...

  7. JavaEE基础(01):Servlet实现方式,生命周期执行...

    一.Servlet简介Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容.使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库 ...

  8. eclipse导入项目报错解决方法

    1.导入项目之前,请确认工作空间编码已设置为utf-8:window->Preferences->General->Wrokspace->Text file encoding- ...

  9. [SDOI2010]魔法猪学院(k短路)

    A*板子题.我的code只能在luogu上过,bzoj上RE/MLE不清楚为啥. 蒟蒻到AFO前2个月不到的时间才学A*,A*其实就是bfs过程中进行剪支删除没必要的搜索.然后其实上这样剪支即可:如果 ...

  10. itop4412开发版-安卓系统卸载默认apk使用文档

    itop4412开发版的安卓系统默认不是最高权限,可以看见后面最后一个是$符号,如下图 1,所以 想我们需要进入 root 权限,可以看见后面最后一个是#符号,如下图所示.在这个变换中只需 要在超级终 ...