博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础-SSM之mybatis快速入门篇
阅读量:7209 次
发布时间:2019-06-29

本文共 11071 字,大约阅读时间需要 36 分钟。

                 Java基础-SSM之mybatis快速入门篇

                                    作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

   其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + mybatis。本篇博客主要介绍mybatis的使用方法,配置起来相对简单!mybatis是一种持久化技术,它内部封装JDBC,将SQL语句外部化,换句话说,就是讲SQL语句提前定义在文件中。官网文档也是相当的友好:http://www.mybatis.org/mybatis-3/zh/getting-started.html(推荐使用谷歌浏览器打开)。

  MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

  

 

  接下来我们一起体验一下mybatis吧,使用它实现增删改查操作,具体操作步骤如下:

 

1>.创建数据库和表

1 create database yinzhengjie;2 3 use yinzhengjie;4 5 create table if not exists users(id int primary key auto_increment,name varchar(20) , age int) ;

 

2>.创建模块引入Maven依赖

1 
2
5
4.0.0
6 7
cn.org.yinzhengjie
8
Mybatis
9
1.0-SNAPSHOT
10 11
12
13
junit
14
junit
15
4.11
16
17
18
mysql
19
mysql-connector-java
20
5.1.17
21
22
23
org.mybatis
24
mybatis
25
3.2.1
26
27
28 29

3>.创建和表对应的java类

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6  7 package cn.org.yinzhengjie.mybatis.domain; 8  9 public class User {10     private Integer id;11     private String name;12     private int age;13 14     public Integer getId() {15         return id;16     }17 18     public void setId(Integer id) {19         this.id = id;20     }21 22     public String getName() {23         return name;24     }25 26     public void setName(String name) {27         this.name = name;28     }29 30     public int getAge() {31         return age;32     }33 34     public void setAge(int age) {35         this.age = age;36     }37 38     public String toString() {39         return "User{" + "id=" + id + ", name='" + name  + ", age=" + age + '}';40     }41 }

4>.在项目resources目录中创建映射UserMapper.xml文件

1 
2 4
5
6
7 insert into users(name, age) values(#{name}, #{age}) ;8
9

5>.创建连接数据库的配置文件(注意,你的数据库,用户名,密码可能跟我不一致,只需要修改相应的参数即可!)

1 
2 5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

6>.编写单元测试代码,对数据库插入一条数据

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.mybatis.test; 7  8 import cn.org.yinzhengjie.mybatis.domain.User.java.User; 9 import org.apache.ibatis.io.Resources;10 import org.apache.ibatis.session.SqlSession;11 import org.apache.ibatis.session.SqlSessionFactory;12 import org.apache.ibatis.session.SqlSessionFactoryBuilder;13 import org.junit.Test;14 15 import java.io.InputStream;16 17 public class TestMybatis {18 19     @Test20     public void testInsert() throws Exception {21         //加载配置文件,产生流对象22         InputStream in = Resources.getResourceAsStream("mybatis-config.xml");23         //创建会话工厂24         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);25         //开启会话,开启连接26         SqlSession s = sf.openSession();27 28         User c = new User();29         c.setName("Yinzhengjie");30         c.setAge(18);31         //注意。这里的users就是UserMapper.xml的namespace(名称空间),而insert则是id的值为insert字符。32         s.insert("users.insert", c);33         //提交事务34         s.commit();35         s.close();36     }37 38 }

7>.查看测试表中的数据是否插入成功

8>.实现增删改查操作

1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6  7 package cn.org.yinzhengjie.mybatis.domain; 8  9 public class User {10     private Integer id;11     private String name;12     private int age;13 14     public Integer getId() {15         return id;16     }17 18     public void setId(Integer id) {19         this.id = id;20     }21 22     public String getName() {23         return name;24     }25 26     public void setName(String name) {27         this.name = name;28     }29 30     public int getAge() {31         return age;32     }33 34     public void setAge(int age) {35         this.age = age;36     }37 38     public String toString() {39         return "User{" + "id=" + id + ", name='" + name  + ", age=" + age + '}';40     }41 }
User.java 文件内容
1 
2 4
5
6
7 insert into users(name, age) values(#{name}, #{age}) ; 8
9 10
11 update users set name = #{name} , age = #{age} where id = #{id}12
13 14
15 delete from users where id = #{id}16
17 18
21 22
25 26
UserMapper.xml 文件内容
1 
2 5
6
7
8
9
10
11
12 13
14
15
16
17 18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mybatis-config.xml 文件内容
1 /*  2 @author :yinzhengjie  3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/  4 EMAIL:y1053419035@qq.com  5 */  6 package cn.org.yinzhengjie.mybatis.test;  7   8 import cn.org.yinzhengjie.mybatis.domain.User;  9 import org.apache.ibatis.io.Resources; 10 import org.apache.ibatis.session.SqlSession; 11 import org.apache.ibatis.session.SqlSessionFactory; 12 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 13 import org.junit.Test; 14 import java.io.InputStream; 15 import java.util.List; 16  17 public class TestMybatis { 18  19     @Test 20     public void testInsert(){ 21         SqlSession sess = null; 22         try { 23             //读取配置文件 24             InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ; 25             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ; 26             //开启会话(连接) 27             sess  = sf.openSession(); 28             User u = new User(); 29             u.setName("Yinzhengjie"); 30             u.setAge(18); 31             //调用插入的方法 32             sess.insert("users.insert",u) ; 33             sess.commit(); 34             System.out.println("插入成功!"); 35         } catch (Exception e) { 36             sess.rollback(); 37             System.out.println("插入失败!"); 38             e.printStackTrace(); 39         }finally { 40             sess.close(); 41         } 42     } 43  44     @Test 45     public void testUpdate(){ 46         SqlSession sess = null; 47         try { 48             //读取配置文件 49             InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ; 50             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ; 51             //开启会话(连接) 52             sess  = sf.openSession(); 53             //定义需要修改的参数 54             User u = new User(); 55             u.setId(1); 56             u.setName("YINZHENGJIE"); 57             u.setAge(26); 58             //调用更新的方法,第一个参数需要指定标签名称,第二个参数传入我们定义好需要需要的对象 59             sess.update("users.update" , u) ; 60             //提交事物 61             sess.commit(); 62             System.out.println("更新成功!"); 63         } catch (Exception e) { 64             sess.rollback(); 65             System.out.println("更新失败!"); 66             e.printStackTrace(); 67         }finally { 68             //释放资源 69             sess.close(); 70         } 71     } 72  73     @Test 74     public void testDeleteOne(){ 75         SqlSession sess = null; 76         try { 77             //读取配置文件 78             InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ; 79             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ; 80             //开启会话(连接) 81             sess  = sf.openSession(); 82             //调用删除的方法 83             int res = sess.delete("users.deleteOne", 2); 84             if (res != 0){ 85                 sess.commit(); 86                 System.out.println("删除成功!"); 87             }else { 88                 System.out.println("指定的数据不存在,因此没有删除任何数据!"); 89             } 90         } catch (Exception e) { 91             sess.rollback(); 92             System.out.println("删除失败"); 93             e.printStackTrace(); 94         }finally { 95             sess.close(); 96         } 97     } 98     @Test 99     public void testSelectOne(){100         try {101             //读取配置文件102             InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;103             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;104             //开启会话(连接)105             SqlSession sess  = sf.openSession();106             //调用查询的方法107             User u = sess.selectOne("users.selectOne",1) ;108             System.out.println(u.getName());109             sess.commit();110             sess.close();111         } catch (Exception e) {112             System.out.println("您要查询的条目不存在!");113 //            e.printStackTrace();114         }115     }116 117     @Test118     public void testSelectAll(){119         SqlSession sess = null;120         try {121             //读取配置文件122             InputStream in = Resources.getResourceAsStream("mybatis-config.xml") ;123             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in) ;124             //开启会话(连接)125             sess  = sf.openSession();126             //调用查询的方法,返回的是一个List的结果集合127             List
list = sess.selectList("users.selectAll") ;128 for(User uu : list){129 System.out.println(uu.getName());130 }131 sess.commit();132 133 } catch (Exception e) {134 e.printStackTrace();135 }finally {136 sess.close();137 }138 }139 }
TestMybatis.java 文件内容

  文件存放目录如下图所示:

 

 

你可能感兴趣的文章
11gR2 新特性: Rebootless Restart
查看>>
Algs4-2.3.28递归深度
查看>>
统计将⽂文件内容读出,然后统计读出的字符串串中每个字符的个数
查看>>
oracle 10g学习1
查看>>
mysql大数据量查询sql语句优化
查看>>
kafka删除一个topic
查看>>
stl容器 简介
查看>>
基于VUE的九宫格抽奖功能
查看>>
killall bluetoothd 一直不成功
查看>>
深度探索区块链/区块链概述(1)
查看>>
不错位的java .class 反编译工具推荐
查看>>
hggroup和adress
查看>>
jq 侧边栏 返回顶部
查看>>
轻量级javascript库不用写CSS3动画 Move.js
查看>>
geth工作运行程序转后台
查看>>
利用CSS对注册页面实现修饰
查看>>
Node.JS创建服务
查看>>
深入浅出node读书笔记(六)
查看>>
SQLYog执行SQL脚本提示:错误代码: 1067 - Invalid default value for '数据库表'查询:解决办法...
查看>>
JavaScript设计原则与编程技巧
查看>>