(一)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 ...
随机推荐
- [原]排错实战——通过对比分析sysinternals事件修复程序功能异常
原调试debug排错troubleshootprocess monitorsysinternals 缘起 最近,我们程序的某个功能在一台机器上不正常,但是在另外一台机器上却是正常的.代码是同一份,vs ...
- scrapy补充-分布式爬虫
spiders 介绍:在项目中是创建爬虫程序的py文件 #1.Spiders是由一系列类(定义了一个网址或一组网址将被爬取)组成,具体包括如何执行爬取任务并且如何从页面中提取结构化的数据. #2.换句 ...
- mysql 获取数据库和表结构信息
SELECT * FROM information_schema.`TABLES` where TABLE_SCHEMA = '数据库名';SELECT * FROM information_sche ...
- List集合分组依据集合中对象的属性
直接上代码 用到了Spring的BeanWrapper类 public static <T, K> Map<K, List<T>> groupByProperty( ...
- 元组(tuple)的用途(基础)
>>>a = 123,456,'jia',['jia','xiang'] >>>a (123, 456, 'jia', ['jia', 'xiang']) 这个带括 ...
- servlet 上传文件
java protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException ...
- 892A. Greed#贪婪(优先队列priority_queue)
题目出处:http://codeforces.com/problemset/problem/892/A 题目大意:有一些可乐(不一定装满),问能不能把所有可乐装进两个可乐瓶中 #include< ...
- MTSP问题
问题描述:m个旅行商去旅游 n个城市,规定都必须从同一个出发点出发,而且返回原出发点,需要将所有的城市遍历完毕,每个城市只能游历一次,但是为了路径最短可以路过这个城市多次.这个就是多旅行商问题.是在T ...
- 一文带你了解BOM基本知识
1.1. BOM和DOM的区别DOM就是一套操作HTML标签的API(接口/方法/属性) BOM就是一套操作浏览器的API(接口/方法/属性) 1.2. BOM中常见的对象window: 代表整个浏览 ...
- Metric space,open set
目录 引入:绝对值 度量空间 Example: 开集,闭集 引入:绝对值 distance\(:|a-b|\) properties\(:(1)|x| \geq 0\),for all \(x \in ...