Mybatis第一天
Mybatis第一天
一、理解什么是MyBatis?
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.
1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)
2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis与hibernate的对比?
mybatis提供一种“半自动化”的ORM实现。
这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
而mybatis的着力点,则在于POJO与SQL之间的映射关系。
二、简单例子(快速入门)
1)首先建立项目
2)导入mybatis所需的jar包
如上图所示,在工程目录下新建一个lib文件夹用来放置jar包。
mybatis需要jar包:mybatis-3.2.2.jar
mysql驱动jar包:mysql-connector-java-5.1.47.jar
日志记录jar包:log4j-1.2.17.jar
3)创建数据库数据(mysql)

4)mysql驱动配置文件(这样可以优化性能)
在src目录下新建一个db.properties文件中(只要后缀为.properties即可),当作数据源的属性,方便修改
#数据源的信息 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis username=root password=root
5)添加mybatis配置文件conf.xml
6)创建对应的实体对象

对应的Java代码(以Users为例):
package com.zhiyou100.zfx.bean; public class Users { private int id; private String name; private int age; public Users(String name, int age) { super(); this.name = name; this.age = age; } public Users() { super(); } public Users(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Users [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
7)创建dao类和定义操作users表的sql映射文件UserMapper.xml

提供简单的增删改查数据信息。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:表示名称空间。现在的目的是区分id的. --> <mapper namespace="com.zhiyou100.zfx.mapper.UsersMapper"> <!-- 根据id查询用户。id:标识该标签。 parameterType:参数类型。可以写 也可以省略 resultType:返回结果的类型。 #{id}:类似于EL表达式。 解析id的值 --> <select id="getUser" resultType="com.zhiyou100.zfx.bean.Users"> select * from users where id=#{id} </select> <insert id="addUser" parameterType="com.zhiyou100.zfx.bean.Users"> insert into users (name,age) values(#{name},#{age}) </insert> <update id="updateUser" parameterType="com.zhiyou100.zfx.bean.Users"> update users set name = #{name} ,age = #{age} where id = #{id} </update> <delete id="deleteUser"> delete from users where id = #{id} </delete> <select id="selectAll" resultType="com.zhiyou100.zfx.bean.Users"> select * from users </select> <select id="selectByAge" parameterType="map" resultType="com.zhiyou100.zfx.bean.Users"> select * from users where age between #{min} and #{max} </select> </mapper>
把mybatis的映射文件要引入到配置文件中
8)需要建立一个junit包里面存放测试文件

package com.zhiyou100.zfx.junit; import static org.junit.jupiter.api.Assertions.*; import java.io.Reader; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import com.zhiyou100.zfx.bean.Users; class TestMybatis { static SqlSession session = null; static String path="com.zhiyou100.zfx.mapper.UsersMapper."; @BeforeAll static void setUpBeforeClass() throws Exception { //解析配置文件 Reader reader = Resources.getResourceAsReader("conf.xml"); //获取SessionFactory对象 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); session = sessionFactory.openSession(); } @Test void add() { int row = session.insert(path+"addUser", new Users("赵六", 30)); System.out.println(row); } @Test void update() { int row = session.update(path+"updateUser", new Users(2, "赵四", 38)); System.out.println(row); } @Test void delete() { session.delete(path+"deleteUser", 4); } @Test void selectAll() { List<Users> list = session.selectList(path+"selectAll"); System.out.println(list); } @Test void selectByAge() { Map<String,Integer> map = new HashMap<>(); map.put("min", 10); map.put("max", 30); List<Users> list = session.selectList(path+"selectByAge",map); System.out.println(list); } @AfterAll static void tearDownAfterClass() throws Exception { session.commit();//手动添加到数据库中 } }
9)加入日志信息
- 导入jar包 log4j-1.2.17.jar(第一步中已经介绍了)
- 在src中创建日志文件.log4j.properties

浙公网安备 33010602011771号