首页 > 其他 > 详细

01、MyBatis HelloWorld

时间:2020-06-07 09:56:06      阅读:63      评论:0      收藏:0      [点我收藏+]

1. MyBatis简介

1)MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

3)MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录

2. 使用 MyBatis原因

1)JDBC

(1)SQL 夹在 Java 代码块里,耦合度高导致硬编码内伤

(2)维护不易且实际开发需求中 sql 是有变化,频繁修改的情况多见

2)Hibernate 和 JPA

(1)长难复杂 SQL,对于 Hibernate 而言处理也不容易

(2)内部自动生产的 SQL,不容易做特殊优化

(3)基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。导致数据库性能下降

3)MyBatis

(1)对开发人员而言,核心 sql 还是需要自己优化

(2)sql 和 java 编码分开,功能边界清晰,一个专注业务、一个专注数据

3. MyBatis下载

1)下载网址

https://github.com/mybatis/mybatis-3/

技术分享图片

 

 

 技术分享图片

 

 

 技术分享图片

 

 

 

4. MyBatis HelloWorld

  · HelloWorld

 – 创建一张测试表

    – 创建对应的javaBean

    – 创建mybatis配置文件,sql映射文件

    – 测试

1) 开发环境准备

(1) 导入 MyBatis 框架的 jar 包、Mysql 驱动包、log4j 的 jar 包

log4j:经典的一种日志解决方案。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。我们可以通过配置文件轻松的实现日志系统的管理和多样化配置。

mysql-connector:连接数据库的驱动

mybatis:使用mybatis框架

log4j-1.2.17.jar

mybatis-3.4.1.jar

mysql-connector-java-5.1.37-bin.jar

(2)导入log4j的配置文件 

技术分享图片
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
 3 
 4 <log4j:configuration
 5     xmlns:log4j="http://jakarta.apache.org/log4j/">
 6 
 7     <appender name="STDOUT"
 8         class="org.apache.log4j.ConsoleAppender">
 9         <param name="Encoding" value="UTF-8" />
10         <layout class="org.apache.log4j.PatternLayout">
11             <param name="ConversionPattern"
12                 value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
13         </layout>
14     </appender>
15     <logger name="java.sql">
16         <level value="debug" />
17     </logger>
18     <logger name="org.apache.ibatis">
19         <level value="info" />
20     </logger>
21     <root>
22         <level value="debug" />
23         <appender-ref ref="STDOUT" />
24     </root>
25 </log4j:configuration>
log4j.xml

2)创建Mysql测试表

-- 创建库

CREATE DATABASE test_mybatis;

-- 使用库

USE test_mybatis;

-- 创建表

CREATE TABLE tbl_employee(

  id INT(11) PRIMARY KEY AUTO_INCREMENT,

  last_name VARCHAR(50),

  email VARCHAR(50),

  gender CHAR(1)

);

3)Employee

  使用Employee接收数据库的记录. 

技术分享图片
 1 public class Employee {
 2     
 3     private Integer id;
 4     private String lastName;
 5     private String email;
 6     private String gender;
 7     
 8     
 9     public Integer getId() {
10         return id;
11     }
12     public void setId(Integer id) {
13         this.id = id;
14     }
15     public String getLastName() {
16         return lastName;
17     }
18     public void setLastName(String lastName) {
19         this.lastName = lastName;
20     }
21     public String getEmail() {
22         return email;
23     }
24     public void setEmail(String email) {
25         this.email = email;
26     }
27     public String getGender() {
28         return gender;
29     }
30     public void setGender(String gender) {
31         this.gender = gender;
32     }
33     @Override
34     public String toString() {
35         return "Employee [id=" + id + ", lastName=" + lastName + ", email="
36                 + email + ", gender=" + gender + "]";
37     }
38 }
Employee.java

4)配置文件

(1)参考MyBatis官方手册

技术分享图片

技术分享图片
 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 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC" />
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.jdbc.Driver" />
11                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
12                 <property name="username" value="root" />
13                 <property name="password" value="root123" />
14             </dataSource>
15         </environment>
16     </environments>
17     
18     <!-- !!!!!!!!!非常重要!!!!!!!!!!!! -->
19     <!-- 将我们写好的sql映射文件<EmployeeMapper.xml>一定要注册到全局配置文件中 -->
20     <mappers>
21         <mapper resource="EmployeeMapper.xml" />
22     </mappers>
23     
24 </configuration>
MyBatis-config.xml

(2)创建MyBatis的SQL映射文件

技术分享图片

 

技术分享图片
 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 <mapper namespace="com.atguigu.mybatis.EmployeeMapper">
 6 <!-- 
 7     namespace:名称空间;指定为接口的全类名
 8     id:唯一标识
 9     resultType:返回值类型
10     #{id}:从传递过来的参数中取出id值
11     public Employee getEmpById(Integer id);
12  -->
13     <select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee">
14         select id,last_name lastName,email,gender from tbl_employee where id = #{id}
15     </select>
16 </mapper>
EmployeeMapper.xml

5)测试

(1) 构建 SqlSessionFactory

  根据全局配置文件,利用SqlSessionFactoryBuilder创建SqlSessionFactory 

技术分享图片

  String resource = "mybatis-config.xml";

  InputStream inputStream = Resources.getResourceAsStream(resource);

  SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

(2)从 SqlSessionFactory 中获取 SqlSession

  使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话。

  使用SqlSession根据方法id进行操作。

技术分享图片

 ① 最新版的Session获取方式

try (SqlSession session = sqlSessionFactory.openSession()) {

  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

}

② 4.1版本获取方式

// 获取sqlSession实例,能直接执行已经映射的sql语句

// sql的唯一标识:statement Unique identifier matching the statement to use.

// 执行sql要用的参数:parameter A parameter object to pass to the statement.

   SqlSession openSession = sqlSessionFactory.openSession();

  try {

    Employee employee = openSession.selectOne("com.atguigu.mybatis.EmployeeMapper.selectEmp", 1);

    System.out.println(employee);

  } finally {

    openSession.close();

  }

(3)NameSpaces说明

  技术分享图片

  (4)注入框架说明

技术分享图片

 


使用接口式编程

技术分享图片

 

技术分享图片
1 public interface EmployeeMapper {
2     public Employee getEmpById(Integer id);
3 }
EmployeeMapper.java
技术分享图片
 1     @Test
 2     public void test1() throws IOException {
 3         
 4         //1. 获取SQLSessionFactory对象
 5         String resource = "mybatis-config.xml";
 6         InputStream inputStream = Resources.getResourceAsStream(resource);
 7         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 8         
 9         //2.获取sqlsession对象
10         SqlSession openSession = sqlSessionFactory.openSession();
11         
12         //3.获取接口的实现类对象 接口的类对象会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
13         try {
14             EmployeeMapper mapper =  openSession.getMapper(EmployeeMapper.class);
15             Employee employee = mapper.getEmpById(1);
16             System.out.println(mapper.getClass());
17             System.out.println(employee);
18         } finally {
19             openSession.close();
20         }
21         
22     }
EmployeeTest.java
技术分享图片
1     <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
2         select id,last_name lastName,email,gender from tbl_employee where id = #{id}
3     </select>
EmployeeMapper.xml

 参考文档:https://mybatis.org/mybatis-3/zh/getting-started.html

https://github.com/mybatis/mybatis-3/

技术分享图片

 

01、MyBatis HelloWorld

原文:https://www.cnblogs.com/CSAH/p/13058311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!