1.首先说下什么是MyBatis:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录,以上来自百度百科
2.然后说一下MyBatis的下载安装:
- 根据自己的需要下载哪个版本的 https://github.com/mybatis/mybatis-3/releases
- 下载之后解压:lib目录是mybatis依赖包,主目录下面有一个mybatis主jar包,讲这些包都导入项目
- 除了需要上述的jar包之外,还需要一个与数据库连接的数据库驱动包,比如我是用的mysql数据库,就需要用到java与mysql的连接包
- 上面工作做完之后就可以开始使用了
3.上述做完之后可以进行代码部分了:
咱们这个增删改查是对于一个用户表,用户表两个字段id,username
具体步骤:
- 创建pojo包,也就是javaBean
- 创建各种配置文件包括log4j的配置文件log4j.properties(模板在mybatis的官方文档8.1.1.2),MyBatis的主配置文件MyBatis-Config.xml(模板在mybatis官方文档2.1.2),还有数据库配置文件db.properties,这三个文件放在src下
- 创建表映射mapper配置文件,注意要把这个mapper文件放到单独的一个mapper包下面,命名最好为表名+mapper,例如咱们这个就是UserMapper.xml(模板在mybatis官方文档2.1.5)
- 写测试类进行测试
- log4j配置文件不要也行,但是建议加上,因为你能看到日志输出,程序在哪一步卡住等等
下面是相关步骤的具体代码和说明:
1.首先是pojo就不贴代码了,和数据库表字段一致就行
2.log4j配置文件:
log4j.rootLogger=ERROR, stdout
log4j.logger.com.cheng.mapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
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"></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>
<mappers>
<mapper resource="com/cheng/mapper/UserMapper.xml" />
</mappers>
</configuration>
其中用properties标签引入数据库的配置文件,在里面配置数据库的信息,然后在后面配置一下mapper的路径,目前咱们用resource来引入mapper文件。
数据库配置文件db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///user
username=root
password=123456
3.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="com.cheng.mapper">
<select id="findUserById" resultType="com.cheng.po.User">
select * from t_user where id=#{id}
</select>
</mapper>
namespace写你mapper所在的包,在后面调用时候会用到,mapper里面有很多种标签,咱们入门先用select标签,先写一个简单的查询,id是最好能简单看出来你这个查询是干什么用的,resultType是查询后返回值的类型。后面博客会详细说明配置文件的各种标签。
4.写测试类进行测试
package com.cheng.test;
import java.io.IOException;
import java.io.InputStream;
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.Test;
import com.cheng.po.User;
public class MybatisTest {
@Test
public void testFindUserById() throws IOException {
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("Mybatis-Config.xml");
//根据配置文件创建SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//用工厂创建sqlSession
SqlSession sqlSession = sessionFactory.openSession();
//用sqlSession来进行操作
User user = sqlSession.selectOne("com.cheng.mapper.findUserById", 2);
System.out.println(user);
}
}
用Resources的getResourceAsStream方法来获取配置文件的输入流,
再根据这个输入流来创建SqlSessionFactory,
再用这个工厂来创建SqlSession,
最后用SqlSession来通过namespace.id来执行到相应的sql语句,最后输出user看看能否查询到。
5.总结:
上面只是一个简单的查询,删除,修改,增加都是在mapper里面创建相应的标签和写相应的sql语句来执行的。
更新:
<update id="updateUser" parameterType="com.cheng.bean.User" >
update t_user set name=#{name} where id=#{id}
</update>
删除:
<delete id="deleteUserById" parameterType="int">
delete from t_user where id=#{id}
</delete>
parameterType是sql里参数的类型,有多个可以直接传入bean
增加:
<insert id="insertUser" parameterType="com.cheng.bean.User">
insert into t_user(username) VALUES(#{username})
</insert>
这就是mybatis的基本入门啦~