(一)mybatis简易搭建
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简易搭建的更多相关文章
- Pritunl:简易搭建个人VPN及年费200的超编译独立主机 BandwagonHost
https://pao-pao.net/article/213 Pritunl:简易搭建个人VPN 文/ Vergil 一 直以来安装 VPN 服务.提供全局加密代理,是租用VPS(虚拟主机)的一个重 ...
- mybatis框架搭建学习初步
mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default=& ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- mybatis的搭建和注入spring的方式
mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库. 与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql ...
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...
- springmvc+mybatis环境搭建
1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...
- mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)
继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...
- 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 ...
随机推荐
- c语言中多维数组和指针的关系
如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址 ...
- luffy项目:基于vue与drf前后台分离项目(1)
""" 1.业务逻辑:登录注册 - 主页(基础信息展示) - 课程页(复杂信息展示)- 课程订单生产与支付 - 上线订单生成 2.实际项目开发的技术点: git版本控制 ...
- Java进行http请求时,放置会话信息到header里面
public class CreateHttpTest { public static void main(String[] args) { createHttp(); } public static ...
- lombak-插件使用
1.@Slf4j .@data 使用 依赖jar ,需要安装该插件 (https://blog.csdn.net/xue632777974/article/details/80437452) < ...
- Gson使用指南(一)
注:此系列基于Gson 2.4. 一.Gson的基本用法 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化.同时每个方法都提供了 ...
- RL78 RAM GUARD Funtion
1.段设置 在Section段增加 My_ProtectRAM_n段, 段地址为RAM起始地址+256字节 2.变量定义 #pragma section bss My_ProtectRAM/*My_P ...
- 翻译——1_Project Overview, Data Wrangling and Exploratory Analysis-checkpoint
为提高提高大学能源效率进行建筑能源需求预测 本文翻译哈佛大学的能源分析和预测报告,这是原文 暂无数据源,个人认为学习分析方法就足够 内容: 项目概述 了解数据 探索性分析 使用不同的机器学习方法进行预 ...
- c语言中fflush的运用为什么没有效果呢,测试平台linux
/************************************************************************* > File Name: clearing. ...
- redhat下libreoffice 的安装
1.第一次安装libreoffic时是用网络yum源安装的,但是装好之后不能用,找了好久没有找出问题,后来从官网下载安装包后安装就可以了. 下载地址:https://zh-cn.libreoffice ...
- poj-3662 Telephone Lines 二分答案+最短路
链接:洛谷 POJ 题目描述 Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone co ...