JAVA-ORM框架整理➣Mybatis操作MySQL
概述
在Java中,对数据库操作的框架很多,上节概述Hibernate的简单使用,这里简单整理Mybatis的使用。Mybatis也是简单的数据库操作框架,通过IOC方式,获取操作类对象,进行数据的操作。本文参考多个博客内容进行总结汇总,整理而成。
Mybatis
功能架构分为三层:
- API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
- 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
- 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
ORM包
mybatis-3.1.2.jar 和 mysql-connector-java-5.1.10
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>
<settings>
<!-- changes from the defaults for testing -->
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<typeAlias alias="User" type="justin.maven.com.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="jdbc"/>
<!--数据库连接-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.1.101:3306/testdb?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--映射文件,配置好路径-->
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>
添加UserMapper.xml映射文件:配置总的ID要和代码内容保持一致
<?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="justin.maven.com.UserMapper">
<!-- 这里namespace必须是UserMapper接口的路径” -->
<insert id="insertUser" parameterType="User">
insert into user(name,age) values(#{name},#{age})
<!-- 这里sql结尾不能加分号,否则报“ORA-”的错误 -->
</insert> <!-- 这里的id必须和UserMapper接口中的接口方法名相同 -->
<select id="getUser" resultType="User" parameterType="java.lang.String">
select * from user where name=#{name}
</select>
</mapper>
代码编写
添加User实体
package justin.maven.com;
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
}
}
添加UserMapper类,记得和UserMapper.xml某些ID保持一致
package justin.maven.com;
public interface UserMapper {
public void insertUser(User user);
public User getUser(String name);
}
添加MyBatisUtil类,初始化调用Mapper
package justin.maven.com; import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil {
private final static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
System.out.println(e.getMessage()); }
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
添加测试类,调用访问数据库
package justin.maven.com; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; public class TestMyBatis { static SqlSessionFactory sqlSessionFactory=null;
static {
sqlSessionFactory=MyBatisUtil.getSqlSessionFactory();
} public static void testAdd()
{
SqlSession sqlSession=sqlSessionFactory.openSession();
try
{
UserMapper userMapper=(UserMapper)sqlSession.getMapper(UserMapper.class);
User user = new User("lisi", new Integer());
userMapper.insertUser(user);
sqlSession.commit();// 这里一定要提交,不然数据进不去数据库中
}
finally {
sqlSession.close();
}
} public static void getUser(){
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
UserMapper userMapper = (UserMapper)sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUser("zhangsan");
System.out.println("name: " + user.getName() + "|age: "
+ user.getAge());
} finally {
sqlSession.close();
}
} public static void smain()
{
testAdd();
getUser();
}
}
测试数据库脚本
CREATE DATABASE mybatis_test; CREATE TABLE user
(
age INTEGER NOT NULL,
name VARCHAR() NOT NULL DEFAULT '' ); insert user values(,'zhanjindong');
insert user values(,'zhangsan');
Eclipse 下Mybatis Xml的智能提示配置
1、下载 http://mybatis.org/dtd/mybatis-3-config.dtd对应的dtd文件放到本地;
2、在Eclipse中,Window——Preference——xml——xml catalog,进行add添加刚刚下载的dtd文件;
Key Type: Public ID
Key: -//mybatis.org//DTD Config 3.0//EN (根据自己的实际情况配置)
3、以Xml Edit的方式打开需要编写UserMapper.xml文件,即可使用智能提示功能;
参考博客
1、MyBatis使用示例 http://www.cnblogs.com/magialmoon/archive/2013/10/30/3397828.html
2、Java框架篇---Mybatis 入门 http://www.cnblogs.com/oumyye/p/4668721.html
JAVA-ORM框架整理➣Mybatis操作MySQL的更多相关文章
- Java-最常用的Java日志框架整理
Java-最常用的Java日志框架整理 前言 Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日 ...
- JAVA - SpringBoot项目引用MyBatis操作数据库
JAVA - SpringBoot项目引用MyBatis操作数据库 1. 创建SpringBoot项目,参考:https://www.cnblogs.com/1285026182YUAN/p/1232 ...
- Spring Boot(六)集成 MyBatis 操作 MySQL 8
一.简介 1.1 MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集. ...
- kotlin + springboot整合mybatis操作mysql数据库及单元测试
项目mybatis操作数据库参考: http://how2j.cn/k/springboot/springboot-mybatis/1649.html?p=78908 junit对controller ...
- 2500-使用MyBatis操作MySQL进行批量更新的注意事项
原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容. 例如: Caused by: com. ...
- java集合框架整理
一.总体框架 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* .Java集合主要可以划分为4个部分:Lis ...
- Mybatis操作Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新
前言 利用Mybatis批量更新或者批量插入,实际上即使Mybatis完美支持你的sql,你也得看看你操作的数据库是否完全支持,而同事,最近就遇到这样的一个坑! 问题 先带大家来 ...
- SpringBoot 使用Mybatis操作mysql示例
1.准备数据库 创建数据库 create databases baodanjia; 创建帐号 create user 'baodanjia'@'%' identified by '123456' gr ...
- Java 使用 Dbutils 工具类库 操作mysql
Dbutils 官网http://commons.apache.org/proper/commons-dbutils/ 结合我个人写的JDBCUtils 写的 Dbutils 的使用demo . JD ...
随机推荐
- 纪念一下我对Kalman的无限崇拜之情
今天用Kalman来求线性预测模型的系数,和LMS一对比,天啦噜,我感叹了半小时... 和LMS需要选合适的步长,样本序列需要足够长,迭代次数需要足够多,相比,卡尔曼真是帅呆了!不需要步长!不需要蒙特 ...
- 【转】JVM内存结构 VS Java内存模型 VS Java对象模型
JVM内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途. 其中有些区域随着虚拟机进程的启动而 ...
- 006_tcpdump专题
抓包是排查问题非常重要的一种方式,这里汇总常用的排查日常问题的,tcpdump在linux机器上的使用姿势. 一.排查statsd打点情况. 线上出现statsd打点的指标无法正常显示的情况,需要排查 ...
- 005_elasticsearch的数据导入导出
一.全部备份和导入 安装:git clone https://github.com/taskrabbit/elasticsearch-dump.gitcd elasticsearch-dumpnpm ...
- ubuntu 安装 eclipse 及其CDT
CDT是在eclipse平台上进行c/c++程序开发的插件.首先安装eclipse平台. 1.在Ubuntu 16.04上查看 eclipse是否已经安装: eclipse 若已经安装,则会进入到ec ...
- 前端 ----jQuery操作表单
05-使用jQuery操作input的value值 表单控件是我们的重中之重,因为一旦牵扯到数据交互,离不开form表单的使用,比如用户的注册登录功能等 那么通过上节知识点我们了解到,我们在使用j ...
- Tp5自动验证
<?php class DB { private $address = 'mysql.21future.com'; private $username = 'manbang'; private ...
- iOS UIDatePicker设置为中文的方法
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 20, 200, 30)]; datePick ...
- Confluence 6 跟踪你安装中的自定义修改
在 Confluence 中的系统信息(System Information)部分,有一个 修改(Modification)的选项.在这个选项中列出了自你 Confluence 安装以来,你 Conf ...
- ionic在ios侧滑页面空白 禁用视图滑动后退
本人在ios10左右滑动的时候,经常出现左滑页面后退,然后整个页面空白现象,只能强行退出,并重新登录,最简单的方法就是禁用侧滑后退这个功能: 在app.js上config增加如下: $ionicCon ...