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. Problem for Nazar CodeForces - 1151C (前缀和)

    Problem for Nazar Nazar, a student of the scientific lyceum of the Kingdom of Kremland, is known for ...

  2. mysql 几个坑

    浮点转int类型 更新合并换成插入 不要频繁更新超过20个字节的字段 程序逻辑得到数据处理后才还回连接

  3. 什么是MTF曲线

    MTF(Modulation Transfer Function)是衡量镜头性能的一个重要指标.将镜头把被摄体所具有的对比度再现到像面上的忠诚度以空间频率特性进行表示,便绘成了MTF曲线图. 曲线图的 ...

  4. 实现hashmap

    /**数组下面挂着链表*/ #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include< ...

  5. MFC的sendmessage和postmessage 以及sendmessagetimeout

    PostMessage只负责将消息放到消息队列中,不确定何时及是否处理,相当于异步操作,执行后马上返回SendMessage要等到受到消息处理的返回码(DWord类型)后才继续,相当于同步操作,一直在 ...

  6. NAIPC2018

    NAIPC2018 参考:http://www.cnblogs.com/LQLlulu/p/9513669.html?tdsourcetag=s_pctim_aiomsg https://www.cn ...

  7. Python 语言基础

    Python 语言基础 Python 开发环境 计算机组成 编程语言(计算机语言)是人们为了控制计算机,而设计的一种符号和文字的组合,从而实现向计算机发出指令. 形式是符号和文字的组合 目的是为了控制 ...

  8. 类似postman插件

    Talend API Tester - Free Edition https://chrome.google.com/webstore/detail/talend-api-tester-free-ed ...

  9. python_4

    1.迭代器:通过iter()方法获得了list的迭代对象,然后就可以通过next()方法来访问list中的元素了,当容器中没有可访问元素时,会抛出StopIteration异常终止迭代器 data = ...

  10. 38)PHP,获取数据库数据并在html中显示(晋级5)

    还有一个加了单例模式的,在第52个. 首先是我的文件关系: 我的主php文件是index.php,我的配置文件php是BBB.php  我的数据库操作文件是  b.php    我的html文件是lo ...