Mybaits入门
一、什么是Mybaits
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
—————百度百科
二、部署Mybaits框架环境
1.下载Mybaits所需的jar包
mybatis官网
: http://www.mybatis.org/mybatis-3/
jar包下载地址
: https://github.com/mybatis/mybatis-3/releases
2.新建工程,导入相关jar包
以下图中的包是mybaitsjar包中的,需要全部导入
3.另外还需要导入数据库驱动包
如果是MySQL数据库,则需导入MySQL数据库驱动包。MySQL的驱动包需要去官网下载
如果是Oracle数据库,需要导入Oracle数据库驱动包。在Oracle数据库安装文件可以找到。
4.我们还需要在src目录下配置一个日志文件,用于打印日志。
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
5.配置Mybaits核心配置文件SqlMapConfig.xml
在src目录下创建一个SqlMapConfig.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>
<properties resource="db.properties"></properties>
<!--配置开发环境-->
<environments default="development">
<environment id="development">
<!--事物管理器-->
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${oracle.driverClass}"></property>
<property name="url" value="${oracle.url}"></property>
<property name="username" value="${oracle.user}"></property>
<property name="password" value="${oracle.password}"></property>
</dataSource>
</environment>
</environments>
</configuration>
6.配置sql映射文件,文件名自定义,这个默认Stu.xml,放在src目录下内容如下
<?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.zk.mapper.UserMapper">
</mapper>
7.将该sql映射文件引入到SqlMapConfig.xml文件中
<!--扫描mapper文件-->
<mappers>
<mapper resource="Stu.xml"></mapper>
</mappers>
放在标签后面。
三、需求开发
1.根据id查询学生的信息
1)在数据库中创建学生表
2) 定义pojo类
如下:
package com.zk.pojo;
/**
* @author zk
* @title: Stu
* @projectName mybaits-01
* @description: TODO
* @date 2019/8/8 14:52
*/
public class Stu {
private int id;
private String name;
private int age;
private String sex;
public Stu() {
}
public Stu(int id, String name, int age, String sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Stu{" +
"id=" + id +
", name='" + name + ''' +
", age=" + age +
", sex='" + sex + ''' +
'}';
}
}
3)在src目录下创建一个mapper的包,存放接口,名字自定义,这里以StuMapper为例
public interface StuMapper {
/**
* @description: 查询所有的数据
* @param ${tags}
* @return ${return_type}
* @throws
* @author ${USER}
* @date 2019/8/8 14:55
*/
List<Stu> queryFindAll();
}
4) 在Stu.xml文件中,配置sql语句
注意:当传入参数类型时原始型时,占位符中的括号中的值可以随意设置,但最好可读性较强(占位符能自动进行java类型和jdbc类型转换,可以有效防止sql注入。)
namespace写上mapper包中接口的路径+名字,select语句中的id为StuMapper接口中的方法同名。
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zk.mapper.StuMapper">
<!--
select标签用于编写查询语句
id:sql语句唯一标识,类比方法名
resultType:用于设定返回结果的类型
-->
<select id="queryFindAll" resultMap="ss">
SELECT * FROM STU
</select>
</mapper>
5)测试 ,代码不懂,不要紧,照着敲就可以了。
public class MybaitsDemo01Test {
private SqlSessionFactory sqlSessionFactory = null;
@Before
public void fun() throws IOException {
SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
//读取Mybaits核心配置文件
sqlSessionFactory = sfb.build(Resources.getResourceAsStream("SqlMapConfig.xml"));
}
//获取session
SqlSession session = sqlSessionFactory.openSession();
List<Stu> list = session.selectList("com.zk.mapper.StuMapper.queryFindAll");
for (Stu stu :
list) {
System.out.println(stu);
}
session.close();
}
查询结果:
Stu{id=1, name='李四', age=12, sex='男 '}
Stu{id=2, name='吉尔达兹', age=15, sex='女 '}
Stu{id=3, name='李四02', age=15, sex='男 '}
Stu{id=4, name='李四03', age=15, sex='女 '}
Stu{id=5, name='李四04', age=15, sex='男 '}
Stu{id=6, name='李四05', age=15, sex='人妖 '}
一个简单的入门就完成了。