Mybatis学习笔记--1

Mybatis是一个持久层的框架,是Apache下的顶级项目.它让程序员将主要精力放在实现业务的SQL上,通过所提供的映射方式,自由灵活生成满足需要SQL语句.Mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成Java对象.

一. MyBatis执行流程

 

实现需求:从User表中查询某条记录.并将这条记录封装为一个实体对象.

二. 环境搭建

1. 新建一个Maven项目.

在pom.xml文件中加入下面的jar包依赖.

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>mybatis</groupId>
 8     <artifactId>demo</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <dependencies>
12         <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
13         <dependency>
14             <groupId>mysql</groupId>
15             <artifactId>mysql-connector-java</artifactId>
16             <version>6.0.3</version>
17         </dependency>
18         <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
19         <dependency>
20             <groupId>org.mybatis</groupId>
21             <artifactId>mybatis</artifactId>
22             <version>3.4.1</version>
23         </dependency>
24         <!-- https://mvnrepository.com/artifact/junit/junit -->
25         <dependency>
26             <groupId>junit</groupId>
27             <artifactId>junit</artifactId>
28             <version>4.12</version>
29         </dependency>
30     </dependencies>
31 </project>

2. 创建数据表

3. 编辑Mybatis配置文件

在resources下面创建mybatis-config.xml

在mybatis-config.xml中加入以下内容.这里需要注意的是:为了避免从DB中读取中文是乱码的问题,所以在url节点加入了characterEncoding=utf-8.另外,在运行mysql的JDBC驱动会出现时区的问题,所以加入了serverTimezone=UTC.

 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.cj.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/example?characterEncoding=utf-8&amp;serverTimezone=UTC"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="123456"/>
14             </dataSource>
15         </environment>
16     </environments>
17 </configuration>

三. 编写代码

1. 在resource下面建立文件夹sqlmap.在此文件夹下建立UserMapper.xml映射文件.

UserMapper.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 namespace="test">
 7     <select id="findUser" parameterType="int" resultType="User">
 8         select * from Blog where id = #{id}
 9     </select>
10 </mapper>

这里需要注意的是,这里使用了namespace的概念.

id等同于这个节点的唯一标示福(statementID).parameterType标明查询条件的数据类型.resultType表示查询出记录后需要封装成什么类型.

另外,SQL语句中#{id}相当于preparedStatement的'?'占位符.

2. 修改mybatis-config.xml配置文件

相比起前面配置文件,这里在configuration中加入了mappers节点,在节点中加入UserMapper.xml映射文件的位置.

 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.cj.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/example?characterEncoding=utf-8&amp;serverTimezone=UTC"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="123456"/>
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="sqlmap/UserMapper.xml"/>
19     </mappers>
20 </configuration>

3. 编写实体类

 1 public class User {
 2     private int id;
 3     private String name;
 4     private int age;
 5 
 6     public int getId() {
 7         return id;
 8     }
 9 
10     public void setId(int id) {
11         this.id = id;
12     }
13 
14     public String getName() {
15         return name;
16     }
17 
18     public void setName(String name) {
19         this.name = name;
20     }
21 
22     public int getAge() {
23         return age;
24     }
25 
26     public void setAge(int age) {
27         this.age = age;
28     }
29 
30     @Override
31     public String toString() {
32         return "User{" +
33                 "id=" + id +
34                 ", name='" + name + '\'' +
35                 ", age=" + age +
36                 '}';
37     }
38 }

4. 编写测试代码

 1 import org.apache.ibatis.io.Resources;
 2 import org.apache.ibatis.session.SqlSession;
 3 import org.apache.ibatis.session.SqlSessionFactory;
 4 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 5 import org.junit.Test;
 6 
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 
10 public class MybatisFirst {
11     @Test
12     public void findUserByIdTest() throws IOException {
13         // 使用类加载器加载mybatis-config.xml配置文件.
14         InputStream inputSteam = Resources.getResourceAsStream("mybatis-config.xml");
15         // 通过配置文件创建会话工厂
16         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);
17         // 通过会话工厂获取与DB连接的会话
18         SqlSession sqlSession = sqlSessionFactory.openSession();
19         // 通过会话执行SQL语句,注意selectOne的两个参数,
20         // 第一个参数:test.findUser - 使用namespace + '.' + statmentID获取要执行的SQL用语句
21         // 第二个参数:查询条件
22         // 获取结果,并将结果封装成User对象
23         User user = sqlSession.selectOne("test.findUser", 1);
24         // 打印对象内容
25         System.out.println(user);
26         // 关闭会话
27         sqlSession.close();
28     }
29 }

四. 执行结果

 

转载于:https://www.cnblogs.com/arctique/p/5668711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值