JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一
系列博文:
JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门
JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二 传送门
JavaWeb_(Mybatis框架)Mapper动态代理开发_三 传送门
JavaWeb_(Mybatis框架)主配置文件介绍_四 传送门
JavaWeb_(Mybatis框架)输入和输出参数_五 传送门
JavaWeb_(Mybatis框架)关联查询_六传送门 传送门
JavaWeb_(Mybatis框架)动态sql_七传送门 传送门
准备数据库
- /*
- SQLyog Professional v12.08 (64 bit)
- MySQL - 5.5.49 : Database - ssm_mybatis
- *********************************************************************
- */
- /*!40101 SET NAMES utf8 */;
- /*!40101 SET SQL_MODE=''*/;
- /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
- /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
- /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
- /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
- CREATE DATABASE /*!32312 IF NOT EXISTS*/`ssm_mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
- USE `ssm_mybatis`;
- /*Table structure for table `country` */
- DROP TABLE IF EXISTS `country`;
- CREATE TABLE `country` (
- `c_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '国家id',
- `c_countryname` varchar(128) NOT NULL COMMENT '国家名称',
- `c_capital` varchar(128) DEFAULT NULL COMMENT '国家首都名称',
- PRIMARY KEY (`c_id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
- /*Data for the table `country` */
- insert into `country`(`c_id`,`c_countryname`,`c_capital`) values (1,'中国','北京'),(3,'美国','华盛顿'),(4,'英国','伦敦'),(5,'日本','东京');
- /*Table structure for table `user` */
- DROP TABLE IF EXISTS `user`;
- CREATE TABLE `user` (
- `u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
- `u_username` varchar(64) NOT NULL COMMENT '用户名',
- `u_password` varchar(64) DEFAULT NULL COMMENT '用户密码',
- `u_sex` varchar(16) DEFAULT NULL COMMENT '用户性别',
- `u_createTime` datetime DEFAULT NULL COMMENT '用户创建时间',
- `u_cid` int(11) DEFAULT NULL COMMENT '用户国家id',
- PRIMARY KEY (`u_id`),
- KEY `FK_user_cid` (`u_cid`),
- CONSTRAINT `FK_user_cid` FOREIGN KEY (`u_cid`) REFERENCES `country` (`c_Id`) ON DELETE NO ACTION ON UPDATE NO ACTION
- ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
- /*Data for the table `user` */
- insert into `user`(`u_id`,`u_username`,`u_password`,`u_sex`,`u_createTime`,`u_cid`) values (1,'老王','','',NULL,1),(2,'jack','','',NULL,3),(3,'alice','ali111','',NULL,3),(4,'王司机','','',NULL,1),(5,'anna','ali111','',NULL,4),(6,'李师傅','','',NULL,1),(7,'漩涡鸣人','','',NULL,5),(8,'娜美','','',NULL,5),(9,'王五','abc','',NULL,1),(10,'老赵',NULL,NULL,NULL,NULL),(11,'老孙',NULL,NULL,NULL,NULL),(12,'98k',NULL,NULL,NULL,NULL);
- /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
- /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
- /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
- /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
ssm_mybatis.sql
JDBC操作数据库
1.链接对象
2.查询对象
3.结果集对象
4.加载数据库驱动
5.获取链接
6.获取statement
7.查询 输出结果
8.关闭资源链接
- package com.Gary.test;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- public class JdbcTest {
- public static void main(String[] args) {
- //1.链接对象
- Connection con = null;
- //2.查询对象
- PreparedStatement ps = null;
- //3.结果集对象
- ResultSet rs = null;
- try {
- //4.加载数据库驱动
- Class.forName("com.mysql.jdbc.Driver");
- //5.获取链接
- con =DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm_mybatis","root","123456");
- String sql = "SELECT * FROM user WHERE u_sex = ?";
- //6.获取statement
- ps = con.prepareStatement(sql);
- ps.setString(1, "0");
- //7.查询 输出结果
- rs = ps.executeQuery();
- while(rs.next()){
- System.out.println(rs.getString("u_id")+" "+rs.getString("u_username") + " "+rs.getString("u_sex"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally {
- //8.关闭资源链接
- if(rs != null) {
- try {
- rs.close();
- }catch(SQLException e) {
- e.printStackTrace();
- }
- }
- if(ps !=null) {
- try {
- ps.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(con != null) {
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
JdbcTest.java
使用JDBC操作数据库不足:频繁开启数据库链接,关闭数据库链接,消耗大量资源
- 1、可以通过主配置文件配置连接池解决频繁创建、释放数据库连接造成的性能影响;
- 2、动态SQL解决JDBC中硬编码问题:
- a)Where条件改变;
- b)占位符位置变化;
- 3、可通过包装类方便的获取数据库查询结果集对象;
- 4、使Dao层业务逻辑和数据库访问分离更易维护和测试。
Mybatis操作数据库优势
Mybatis架构图
Mybatis框架的搭建
- package com.Gary;
- import java.util.Date;
- public class User {
- private Integer u_id;
- private String u_username;
- private String u_password;
- private String u_sex;
- private Date u_createTime;
- private Integer u_cid;
- @Override
- public String toString() {
- return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_sex=" + u_sex
- + ", u_createTime=" + u_createTime + ", u_cid=" + u_cid + "]";
- }
- public Integer getU_id() {
- return u_id;
- }
- public void setU_id(Integer u_id) {
- this.u_id = u_id;
- }
- public String getU_username() {
- return u_username;
- }
- public void setU_username(String u_username) {
- this.u_username = u_username;
- }
- public String getU_password() {
- return u_password;
- }
- public void setU_password(String u_password) {
- this.u_password = u_password;
- }
- public String getU_sex() {
- return u_sex;
- }
- public void setU_sex(String u_sex) {
- this.u_sex = u_sex;
- }
- public Date getU_createTime() {
- return u_createTime;
- }
- public void setU_createTime(Date u_createTime) {
- this.u_createTime = u_createTime;
- }
- public Integer getU_cid() {
- return u_cid;
- }
- public void setU_cid(Integer u_cid) {
- this.u_cid = u_cid;
- }
- }
User.java
- <?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>
- <environments default="development">
- <environment id="development">
- <!-- 使用JDBC的事务 -->
- <transactionManager type="JDBC"/>
- <!-- 使用连接池链接数据库 -->
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/ssm_mybatis"/>
- <property name="username" value="root"/>
- <property name="password" value="123456"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="mapper/UserMapper.xml"/>
- </mappers>
- </configuration>
sqlMapConfig.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>
- </mapper>
UserMapper.xml
JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一的更多相关文章
- MyBatis实现Mysql数据库分库分表操作和总结
前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这 ...
- mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)
通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1 背景 系统中需要批量生成单据数据到数据库表,所以采用 ...
- SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)
本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...
- Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?
Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的? 如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一 ...
- Java EE数据持久化框架 • 【第2章 MyBatis实现DML操作】
全部章节 >>>> 本章目录 2.1 标签 2.1.1 标签简单应用 2.1.2 使用JDBC方式返回主键自增的值 2.1.3 使用标签返回普通主键的值 2.1.4 实践练 ...
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(一)
Spring+MyBatis 首先要搭建的是Spring+MyBatis的整合框架,毕竟Spring是整个Web框架的核心部位,而数据库操作是一切测试的基础嘛. 目录结构 ━java ┣ contro ...
- Mybatis和JDBC区别
今天面试中问了这个问题,当时答的不好,现在整理一下. JDBC是Java提供的一个操作数据库的API: MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
- 框架篇:Spring+SpringMVC+Mybatis整合开发
前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...
随机推荐
- NetCore2.x 使用Log4Net(一)
前言:本章仅仅是Log4Net的基本简单的运用,后续章节会按照我的项目使用情况进行深入研究 1.项目搭建 新建一个基于.netCore2.x的Web项目 => 过程略 给新 ...
- mysql 8.0.13开启远程连接 配置方式
1:linux登录mysql [root@localhost mysql]# mysql -u root -p Enter password: Welcome to the MySQL monitor ...
- 题解 P3369 【【模板】普通平衡树(Treap/SBT)】
STL真是个好东西. 最近在看pb_ds库及vector和set的用法,就想用这三种操作来实现一下普通平衡树,结果pb_ds中的rbtree不支持重复值,而本蒟蒻也看不懂不懂各大佬用pb_ds的实现, ...
- NLog Helpper日志帮助类配置和使用
1.帮助类 (首先需要引入NLog.dll) using System; namespace XXXXXX { /// <summary> /// 用法实例 : NLogTest.Nlo ...
- 行级安全(Row
通过授予和拒绝(Grant/Deny)命令控制用户的权限,只能控制用户对数据库对象的访问权限,这意味着,用户访问的粒度是对象整体,可以是一个数据表,或视图等,用户要么能够访问数据库对象,要么没有权限访 ...
- Java虚拟机(JVM)知多少
本文大量参考:https://www.cnblogs.com/lfs2640666960/p/9297176.html 概述 JVM是JRE的一部分.它是一个虚构出来的计算机,是通过在实际的计算机上仿 ...
- mysql启动失败,unit not found
1 mysql启动 Failed to start mysqld.service: Unit not found. 2 查询/etc/init.d/下是否存在mysqld ll /etc/init ...
- idea代码爆红,clean,或者maven reimport都不起作用
1 突然自己的idea的Maven项目代码都是爆红,但是可以运行,添加新的代码确无法运行 尝试了clean,或者reimport,甚至是大家推荐的,刷新缓存重启也没有作用 2 检查项目的jdk配置,也 ...
- Mysql(五):索引原理与慢查询优化
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- dropbear源码编译安装及AIDE软件监控
ssh协议的另一个实现:dropbear源码编译安装:• 1.安装开发包组:yum groupinstall “Development tools”• 2.下载 -2017.75.tar.bz2 ...