博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBaties --day1
阅读量:4658 次
发布时间:2019-06-09

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

今天就来聊聊这个东西 今天的主角相信大家也看到了 MyBaties  是个什么东东 它有什么作用?怎么用?好不好用今天来说说 .说到MyBaties 就不得不谈到JDBC大家可能都知道 JDBC用来操作数据库 几乎所有的项目都会跟数据库进行交互 我们传统的JDBC访问数据主要为以下几部

  1. 通过Class.forName()加载驱动程序
  2. 通过DriverManage.getConnection()获取数据库连接
  3. 通过Connection.createStatement()或者preparedStatement()创建操作数据库的语句对象
  4. 执行SQL语句
  5. 处理SQL语句
  6. 关闭资源

弊端

  1. 他将数据库连接的信息都写在了java代码中 不便于数据源的切换
  2. 频繁的创建销毁数据连接 影响了程序的性能
  3. java源码中出现了大量的SQL语句 不便于修改SQL
  4. java对象模型与数据库关系不兼容 jdbc操作数据库时存在大量的实体对象与数据库关系之间相互转换的代码 可维护性差

这时MyBaties就出现了 MyBaties是基于JDBC的持久化层框架 它对jdbc操作数据库进行了封装 我们不需要花费时间区关注如何区处理注册驱动、创建连接 创建语句对象 以及对象与数据库关系的转化之间繁琐的代码,只需要关注SQL本身 而且不需要将SQL写在源码中 直接写在XML配置文件中 是不是很神奇呢?

那么如何去使用MyBaties

      1.创建java项目

      2.添加相关联的依赖包

      3.添加MyBaties的核心配置文件

      4.创建数据库 表以及实体类

      5.添加MyBaties映射文件

      6.创建SqlSessionFactory对象 SqlSession对象

    下载MyBaties的地址网上一搜就可以找到  

解压后会发现里面有很多jar包我们可以选择部分添加到项目中 只需要这几个就够了 现在 

log4j-1.2.17.jar     这个jar包是一个java日志文件夹包

mybatis-3.5.1.jar  使用MyBateis时必用的架包  
mysql-connector-java-5.1.47.jar 用来连接数据库
slf4j-api-1.7.26.jar     简单日记门面
slf4j-log4j12-1.7.26.jar

 

3.添加MyBaties核心配置文件 这里主要是 配置数据库的连接信息和 关联映射的文件 

添加日志组件log4j的配置文件log4j.propertis至classpath根目录下,用于输出MyBatis执行过程中的日志信息。这里的

com/newroad/dao/StudentMapper.xml 是StudentMapper.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

4.创建数据库、表以及实体类 

package com.newroad.entity;public class Student {    private Integer id;    private String name;    private String password;    private String email;        @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + "]";    }    public Student(Integer id, String name, String password, String email) {        super();        this.id = id;        this.name = name;        this.password = password;        this.email = email;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }}

5.创建StudentMapper.xml 的映射文件 MyBatis映射文件是一个XML文件,在这个XML文件中可以 我们可以写要执行的SQL语句 

3 
4
这一步很重要 是一个必须的属性
1 
2 3
4
5
6
7 insert into student(id,name,password,email) values (#{id},#{name},#{password},#{email}) 8
9 10
11
12 delete from student where id=#{id}13 4
15 16 17
18
19 update student set name=#{name},password=#{password},email=#{email} where id=#{id}20
21
22
23
24
28 29
30
34 35
36
39 40 41 42

 

6.创建SqlSessionFactory、SqlSession对象 

注意:   int num = session.insert("com.newroad.dao.StudentMapper.save", stu); 

这里的 com.newroad.dao.StudentMapper 对应着StudentMapper.xml映射文件中的 namespace的值 而后面的save 对应id的名字一定要相同

1 package com.newroad.test; 2  3 import static org.junit.Assert.assertEquals; 4 import java.io.InputStream; 5 import java.util.List; 6 import org.apache.ibatis.session.SqlSession; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 import org.junit.After;10 import org.junit.Before;11 12 import org.junit.Test;13 14 import com.newroad.entity.Student;15 16 public class Test2 {17     // 获取连接配置对象18     InputStream in = Test2.class.getResourceAsStream("/mybatis-config.xml");19     // 创建sqlsessionFactoryBuilder20     SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();21     SqlSessionFactory factory = builder.build(in);22     SqlSession session;23 24     @Before // 在每个test方法执行之前都会执行这个方法25     public void init() {26         session = factory.openSession();27     }28 29     @Test // 测试的方法30     public void test() {31         Student stu = new Student(12, "pan", "10086", "123432@qq.com");32         int num = session.insert("com.newroad.dao.StudentMapper.save", stu);33         // 断言结果 如果结果为1 成功34         assertEquals(num, 1);35 36     }37 38     @Test39     public void deleteById() {40         int num = session.delete("com.newroad.dao.StudentMapper.deleteById", 6);41         System.out.println("num=" + num);42         assertEquals(num, 1);43     }44 45     @Test46     public void selectOne() {47         Student stu = session.selectOne("com.newroad.dao.StudentMapper.selectByid", 4);48         System.out.println("num=" + stu);49         assertEquals(stu, 1);50     }51 52     @Test53     public void listStudent() {54         List
students = session.selectList("com.newroad.dao.StudentMapper.selectAll");55 students.forEach(stu -> System.out.println(stu));56 57 }58 59 @After // 在每个test方法执行后就会执行60 public void close() {61 session.commit();62 session.close();63 }64 65 }

 

 

 

 

 

转载于:https://www.cnblogs.com/hengly/p/10872463.html

你可能感兴趣的文章
Python网页正文转换语音文件的操作方法
查看>>
常用SQL查询语句
查看>>
Redis Windows版安装详解
查看>>
linux后台运行python程序 nohup
查看>>
吴裕雄--天生自然 高等数学学习:对面积的曲面积分
查看>>
css
查看>>
Android中数据文件解析(Json解析)
查看>>
自定义seekBar设置进度条背景图片
查看>>
16日彻底去除安卓应用的内置广告
查看>>
ssm资源配置
查看>>
斗鱼爬虫,爬取颜值频道的主播图片和名字
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 B】 Lazy Security Guard
查看>>
【codeforces 499C】Crazy Town
查看>>
js 逻辑与 逻辑或
查看>>
树状数组求区间最大值
查看>>
一个简单的PHP网站结构
查看>>
Redis 学习之简介及安装
查看>>
jsp简单的学习
查看>>
[LeetCode][JavaScript]Number of 1 Bits
查看>>
[LeetCode][JavaScript]Plus One
查看>>