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 ...
随机推荐
- [debug]记一次竞态更新bug的解决
公司的django项目,有一个旧接口,使用POST方法更新用户的一种记录型数据. 这个接口的历史有点长,最早的时候没有那么多需求,只会更新两个布尔字段.后来,加入一个需要高频次记录的字段.这些字段都属 ...
- 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别
在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...
- 004_strace工具
strace - trace system calls and signals 一.strace工具详解 之前线上主机上8351 进程夯死导致无法获悉进程信息,监控程序使用ps 命令查看进程信息至/p ...
- ubuntu 远程登录错误
利用 ubuntu 16.04 自带功能远程登录到同事的电脑时,提示如下错误: This file server type is not recognized 百度一下,得知,缺少必要的文件,安装后 ...
- 通过zabbix自带api进行主机的批量添加操作
通过zabbix自带api进行批量添加主机 我们需要监控一台服务器的时候,当客户端装好zabbix-agent端并正确配置以后,需要在zabbix-server的web gui界面进行添加zabbix ...
- 用layui搭建的后台框架
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IPFS环境安装
IPFS是一个分布式的P2P的协议,可能会取代这个http,全球的点都可能存储这个数据 IPFS搭建环境 1.首先是下载节点软件到官网下载windows版本的ipfs节点软件,如果不能访问官网的话,可 ...
- js---json对象拆分
var a={ "bb":"world", "a0":1, "a1":2, "b0":4, &quo ...
- 2018年Android的保活方案效果统计
一.常见保活方案 1.监听广播:监听全局的静态广播,比如时间更新的广播.开机广播.解锁屏.网络状态.解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效.可 ...
- Java_oracle超出打开游标的最大数的原因和解决方案
第一步:核查Oracle数据库 的游标的最大数 处理超出打开游标的最大数异常(ORA-01000: maximum open cursors exceeded) ORA-01000_maximum_o ...