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. sql plus笔记

    指令请走这边 因为sql plus缓冲区有限 所以要查看输出有时会不太方便 使用spool语句将输出写入文件 sql>spool 要保存的完整路径 ; ; ; sql output; ; ; s ...

  2. restful的简单使用

    根据http的不同方法,访问不同路由的相同控制器下的不同方法可以实现restful的使用 分别对应 路由方式 get put delete post 对应操作 获取 更新 删除 添加 其中如果要在非l ...

  3. CF 1047 C - Enlarge GCD [素数筛]

    传送门:http://codeforces.com/contest/1047/problem/C 题意:给出n个数字,求最少删除几个数可以使剩下的数字的GCD大于n个数字的GCD 思路:最开始想的是先 ...

  4. 关于汽车诊断OBD的理解(ISO15031-5)(转发)

    1.OBD用来做什么 2.OBD和UDS的区别 3.OBD硬件接口简介 4.OBD的9大模式介绍 OBD(On-Board Diagnostic)指的是在线诊断系统,是汽车上的一种用于监控车辆状况以及 ...

  5. LeetCode——853.车队

    N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地. 一辆车 ...

  6. Pytorch——BERT 预训练模型及文本分类

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  7. python代码技术优化

    numba 编译优化 from numba import jit @jit def eval_mcc(y_true, y_prob, threshold=False): idx = np.argsor ...

  8. SpringMVC访问出错No converter found for return value of type

    在使用SSM整合的时候,spring mvc 添加@ResponseBody的时候,正常情况下都会返回json的.但是又的时候如果没有配置好的话,如果想要返回Map的json对象会报:No conve ...

  9. elasticsearch-hadoop 扩展定制 官方包以支持 update upsert doc

    官方源码地址https://github.com/elastic/elasticsearch-hadoop 相关文档 https://www.elastic.co/guide/en/elasticse ...

  10. python程序的打开运行方式

    python程序的运行方式大致可以分为两种,一种是直接通过python解释器直接解释型运行,另外一种是先把python程序编译为二进制文件再运行. .源代码 -python源代码的文件以"p ...