MyBatis入门教程(MyBatis3.2)


MyBatis和Hibernate一样都是基于ORM的关系型数据库框架

ORM工具的基本思想:

1.从配置文件(通常是XML配置文件中)得到 sessionfactory.
2.
sessionfactory产生
session
3.
session中完成对数据的增删改查和事务提交等
.
4.
在用完之后关闭session

5.java对象和数据库之间有做mapping的配置文件,也通常是xml文件。



MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。


本文就一个demo的形式,讲诉MyBatis的数据库操作过程,新建一个web项目,项目结构如图:

我们需要准备mybatis3.2.jar和mysql的jar,日志输出的jar根据自己项目的需要



新建数据库,数据表是users,设置id为主键,同时自动增长



新建一个资源文件config

编写数据库配置信息文件db.properties:

driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/db_mysql?useUnicode\=true&characterEncoding\=utf-8
username=root
password=111


编写pojo类:

package com.mybatis.entity;

public class User {

	/*
	 * ID
	 */
	private int id;
	
	/*
	 * 用户姓名 
	 */
	private String name;
	
	/*
	 * age
	 */
	private int 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 "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}


编写pojo类对应的mapper文件:

<?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">
<!-- 
	为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 
-->
<mapper namespace="com.mybatis.mapper.userMapper">

<!-- 
	在select标签中编写查询的SQL语句, 设置select标签的id属性为findById,id属性值必须是唯一的,不能够重复
    parameterType可以在MyBatis的配置文件里设置,也可以直接用包名+类名
 -->
 
 
	<insert id="save" parameterType="User">
	insert into users(id,name,age) value(#{name},#{age})
	</insert>
	<update id="update" parameterType="User">
	update users set name=#{name},age=#{age} where id=#{id}
	</update>
	<delete id="delete" parameterType="int">
	delete from users where id=#{id}
	</delete>
	<select id="findById" parameterType="int" resultType="User">
	select * from users where id=#{id}
	</select>
	<select id="findAll" resultType="User">
	select * from users
	</select>
</mapper>



然后,在编写MyBatis的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
	<!-- 数据库配置文件  --> 
    <properties resource="db.properties" />  
     
   <!-- 实体类,简称 -设置别名 -->
	<typeAliases>
		<typeAlias alias="User" type="com.mybatis.entity.User" />
	</typeAliases>
	
	<!-- 读取db.properties里的数据,进行数据库配置 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
	            <property name="url" value="${url}" />
	            <property name="username" value="${username}"/>
	            <property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 注册userMapper.xml文件 -->
	<mappers>
		<mapper resource="com/mybatis/mapper/userMapper.xml"/>
	</mappers>
	
</configuration>

测试类:

import java.io.Reader;

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 com.mybatis.entity.User;


public class Test {

	public static void main(String[] args) {
		String resource = "mybatis-config.xml";
		try{
			//加载Mybatis的配置文件
			Reader reader = Resources.getResourceAsReader(resource);
			//构建sqlSession的工厂
	        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
			//创建可以执行sql的SqlSession
	        SqlSession session = sessionFactory.openSession();
			//映射sql的标志字符串
	        String statement = "com.mybatis.mapper.userMapper.findById";
	        //执行查询返回id为1的User对象
			User user = session.selectOne(statement,1);
			System.out.println(user);
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}


然后,可以编写日志文件,进行日志输出

log4j.properties\uFF0C
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

运行测试类,可以输出,说明我们的mybatis搭建好了,可以进行数据库操作



需要注意的:

为了统一编码,建议新建数据库时设置成utf-8的

还有测试时,那个id一定要和userMapper.xml里的id对应,mybatis是根据这个id调用sql函数的哦

配置mybatis文件时,一定要注意顺序,一般都是先配置别、数据库配置、然后mapper文件注册的




入门 安装 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。 如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>从 XML 中构建 SqlSessionFactory 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。 从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。 String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>当然,还有很多可以在XML 文件中进行配置,上面的示例指出的则是最关键的部分。要注意 XML 头部的声明,用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息)。 不使用 XML 构建 SqlSessionFactory 如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。 .....................................
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值