系列博文:  

    JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一    传送门

    JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二        传送门

    JavaWeb_(Mybatis框架)Mapper动态代理开发_三                 传送门

    JavaWeb_(Mybatis框架)主配置文件介绍_四                     传送门

    JavaWeb_(Mybatis框架)输入和输出参数_五                   传送门

    JavaWeb_(Mybatis框架)关联查询_六传送门                   传送门

    JavaWeb_(Mybatis框架)动态sql_七传送门                   传送门

  准备数据库

  

  

  1. /*
  2. SQLyog Professional v12.08 (64 bit)
  3. MySQL - 5.5.49 : Database - ssm_mybatis
  4. *********************************************************************
  5. */
  6.  
  7. /*!40101 SET NAMES utf8 */;
  8.  
  9. /*!40101 SET SQL_MODE=''*/;
  10.  
  11. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
  12. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  13. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  14. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  15. CREATE DATABASE /*!32312 IF NOT EXISTS*/`ssm_mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
  16.  
  17. USE `ssm_mybatis`;
  18.  
  19. /*Table structure for table `country` */
  20.  
  21. DROP TABLE IF EXISTS `country`;
  22.  
  23. CREATE TABLE `country` (
  24. `c_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '国家id',
  25. `c_countryname` varchar(128) NOT NULL COMMENT '国家名称',
  26. `c_capital` varchar(128) DEFAULT NULL COMMENT '国家首都名称',
  27. PRIMARY KEY (`c_id`)
  28. ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
  29.  
  30. /*Data for the table `country` */
  31.  
  32. insert into `country`(`c_id`,`c_countryname`,`c_capital`) values (1,'中国','北京'),(3,'美国','华盛顿'),(4,'英国','伦敦'),(5,'日本','东京');
  33.  
  34. /*Table structure for table `user` */
  35.  
  36. DROP TABLE IF EXISTS `user`;
  37.  
  38. CREATE TABLE `user` (
  39. `u_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  40. `u_username` varchar(64) NOT NULL COMMENT '用户名',
  41. `u_password` varchar(64) DEFAULT NULL COMMENT '用户密码',
  42. `u_sex` varchar(16) DEFAULT NULL COMMENT '用户性别',
  43. `u_createTime` datetime DEFAULT NULL COMMENT '用户创建时间',
  44. `u_cid` int(11) DEFAULT NULL COMMENT '用户国家id',
  45. PRIMARY KEY (`u_id`),
  46. KEY `FK_user_cid` (`u_cid`),
  47. CONSTRAINT `FK_user_cid` FOREIGN KEY (`u_cid`) REFERENCES `country` (`c_Id`) ON DELETE NO ACTION ON UPDATE NO ACTION
  48. ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
  49.  
  50. /*Data for the table `user` */
  51.  
  52. 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);
  53.  
  54. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
  55. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
  56. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
  57. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

ssm_mybatis.sql

  JDBC操作数据库

    1.链接对象

    2.查询对象

    3.结果集对象

    4.加载数据库驱动

    5.获取链接

    6.获取statement

    7.查询 输出结果

    8.关闭资源链接

  

  1. package com.Gary.test;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8.  
  9. public class JdbcTest {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. //1.链接对象
  14. Connection con = null;
  15.  
  16. //2.查询对象
  17. PreparedStatement ps = null;
  18.  
  19. //3.结果集对象
  20. ResultSet rs = null;
  21.  
  22. try {
  23. //4.加载数据库驱动
  24. Class.forName("com.mysql.jdbc.Driver");
  25.  
  26. //5.获取链接
  27. con =DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm_mybatis","root","123456");
  28.  
  29. String sql = "SELECT * FROM user WHERE u_sex = ?";
  30.  
  31. //6.获取statement
  32. ps = con.prepareStatement(sql);
  33. ps.setString(1, "0");
  34.  
  35. //7.查询 输出结果
  36. rs = ps.executeQuery();
  37. while(rs.next()){
  38. System.out.println(rs.getString("u_id")+" "+rs.getString("u_username") + " "+rs.getString("u_sex"));
  39. }
  40.  
  41. } catch (Exception e) {
  42.  
  43. e.printStackTrace();
  44. }finally {
  45. //8.关闭资源链接
  46. if(rs != null) {
  47. try {
  48. rs.close();
  49. }catch(SQLException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. if(ps !=null) {
  54. try {
  55. ps.close();
  56. } catch (SQLException e) {
  57.  
  58. e.printStackTrace();
  59. }
  60. }
  61. if(con != null) {
  62. try {
  63. con.close();
  64. } catch (SQLException e) {
  65.  
  66. e.printStackTrace();
  67. }
  68. }
  69. }
  70.  
  71. }
  72.  
  73. }

JdbcTest.java

  使用JDBC操作数据库不足:频繁开启数据库链接,关闭数据库链接,消耗大量资源

  1. 1、可以通过主配置文件配置连接池解决频繁创建、释放数据库连接造成的性能影响;
  2. 2、动态SQL解决JDBC中硬编码问题:
  3. a)Where条件改变;
  4. b)占位符位置变化;
  5. 3、可通过包装类方便的获取数据库查询结果集对象;
  6. 4、使Dao层业务逻辑和数据库访问分离更易维护和测试。

Mybatis操作数据库优势

  Mybatis架构图

  

  Mybatis框架的搭建

  

  1. package com.Gary;
  2.  
  3. import java.util.Date;
  4.  
  5. public class User {
  6.  
  7. private Integer u_id;
  8. private String u_username;
  9. private String u_password;
  10. private String u_sex;
  11. private Date u_createTime;
  12. private Integer u_cid;
  13.  
  14. @Override
  15. public String toString() {
  16. return "User [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_sex=" + u_sex
  17. + ", u_createTime=" + u_createTime + ", u_cid=" + u_cid + "]";
  18. }
  19. public Integer getU_id() {
  20. return u_id;
  21. }
  22. public void setU_id(Integer u_id) {
  23. this.u_id = u_id;
  24. }
  25. public String getU_username() {
  26. return u_username;
  27. }
  28. public void setU_username(String u_username) {
  29. this.u_username = u_username;
  30. }
  31. public String getU_password() {
  32. return u_password;
  33. }
  34. public void setU_password(String u_password) {
  35. this.u_password = u_password;
  36. }
  37. public String getU_sex() {
  38. return u_sex;
  39. }
  40. public void setU_sex(String u_sex) {
  41. this.u_sex = u_sex;
  42. }
  43. public Date getU_createTime() {
  44. return u_createTime;
  45. }
  46. public void setU_createTime(Date u_createTime) {
  47. this.u_createTime = u_createTime;
  48. }
  49. public Integer getU_cid() {
  50. return u_cid;
  51. }
  52. public void setU_cid(Integer u_cid) {
  53. this.u_cid = u_cid;
  54. }
  55.  
  56. }

User.java

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5.  
  6. <configuration>
  7. <environments default="development">
  8. <environment id="development">
  9. <!-- 使用JDBC的事务 -->
  10. <transactionManager type="JDBC"/>
  11. <!-- 使用连接池链接数据库 -->
  12. <dataSource type="POOLED">
  13. <property name="driver" value="com.mysql.jdbc.Driver"/>
  14. <property name="url" value="jdbc:mysql://localhost:3306/ssm_mybatis"/>
  15. <property name="username" value="root"/>
  16. <property name="password" value="123456"/>
  17. </dataSource>
  18. </environment>
  19. </environments>
  20.  
  21. <mappers>
  22. <mapper resource="mapper/UserMapper.xml"/>
  23. </mappers>
  24. </configuration>

sqlMapConfig.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper>
  7.  
  8. </mapper>

UserMapper.xml

JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一的更多相关文章

  1. MyBatis实现Mysql数据库分库分表操作和总结

    前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这 ...

  2. mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)

    通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...

  3. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1      背景 系统中需要批量生成单据数据到数据库表,所以采用 ...

  4. SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)

    本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...

  5. Mybatis源码解析(四) —— SqlSession是如何实现数据库操作的?

    Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的?   如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一 ...

  6. Java EE数据持久化框架 • 【第2章 MyBatis实现DML操作】

    全部章节   >>>> 本章目录 2.1 标签 2.1.1 标签简单应用 2.1.2 使用JDBC方式返回主键自增的值 2.1.3 使用标签返回普通主键的值 2.1.4 实践练 ...

  7. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(一)

    Spring+MyBatis 首先要搭建的是Spring+MyBatis的整合框架,毕竟Spring是整个Web框架的核心部位,而数据库操作是一切测试的基础嘛. 目录结构 ━java ┣ contro ...

  8. Mybatis和JDBC区别

    今天面试中问了这个问题,当时答的不好,现在整理一下. JDBC是Java提供的一个操作数据库的API: MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  9. 框架篇:Spring+SpringMVC+Mybatis整合开发

    前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...

随机推荐

  1. NetCore2.x 使用Log4Net(一)

    前言:本章仅仅是Log4Net的基本简单的运用,后续章节会按照我的项目使用情况进行深入研究 1.项目搭建 新建一个基于.netCore2.x的Web项目          =>   过程略 给新 ...

  2. mysql 8.0.13开启远程连接 配置方式

    1:linux登录mysql [root@localhost mysql]# mysql -u root -p Enter password: Welcome to the MySQL monitor ...

  3. 题解 P3369 【【模板】普通平衡树(Treap/SBT)】

    STL真是个好东西. 最近在看pb_ds库及vector和set的用法,就想用这三种操作来实现一下普通平衡树,结果pb_ds中的rbtree不支持重复值,而本蒟蒻也看不懂不懂各大佬用pb_ds的实现, ...

  4. NLog Helpper日志帮助类配置和使用

    1.帮助类  (首先需要引入NLog.dll) using System; namespace XXXXXX { /// <summary> /// 用法实例 : NLogTest.Nlo ...

  5. 行级安全(Row

    通过授予和拒绝(Grant/Deny)命令控制用户的权限,只能控制用户对数据库对象的访问权限,这意味着,用户访问的粒度是对象整体,可以是一个数据表,或视图等,用户要么能够访问数据库对象,要么没有权限访 ...

  6. Java虚拟机(JVM)知多少

    本文大量参考:https://www.cnblogs.com/lfs2640666960/p/9297176.html 概述 JVM是JRE的一部分.它是一个虚构出来的计算机,是通过在实际的计算机上仿 ...

  7. mysql启动失败,unit not found

    1 mysql启动 Failed to start mysqld.service: Unit not found.   2 查询/etc/init.d/下是否存在mysqld ll /etc/init ...

  8. idea代码爆红,clean,或者maven reimport都不起作用

    1 突然自己的idea的Maven项目代码都是爆红,但是可以运行,添加新的代码确无法运行 尝试了clean,或者reimport,甚至是大家推荐的,刷新缓存重启也没有作用 2 检查项目的jdk配置,也 ...

  9. Mysql(五):索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  10. dropbear源码编译安装及AIDE软件监控

    ssh协议的另一个实现:dropbear源码编译安装:• 1.安装开发包组:yum groupinstall “Development tools”• 2.下载 -2017.75.tar.bz2    ...