mybatis简介
用来管理数据库,类似Hibrnate
属于orm框架
对象映射关系:实体对象pojo、数据表、映射文件(mapper)
作用:以对象的行为操作数据表
mybatis特点
- 是一个半自动orm框架(重点)
- 本质也是通过对象的行为操作数据库表
- 要写定制sql
- 轻量级框架
- 支持复杂存储过程、复杂查询
- 灵活性高
- 开源
编写第一个mybatis程序
- 导入mybatis库文件
- 数据库创建数据表
create TABLE tb_user
(
ID int(11) primary key auto_increment,
NAME varchar(18) default null,
SEX char(2) default null,
AGE int(11) default null
);
- 编写pojo
package com.gec.pojo;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private String sex;
private String age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age='" + age + '\'' +
'}';
}
}
- 编写全局配置文件以及log4j.properties,jdbc.properties
log4j.properties
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.gec.mapper.UserMapper=DEBUG
log4j.logger.com.gec.mapper.UserMapper2=DEBUG
# 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
jdbc.properties,没有密码是mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_1976
jdbc.username=root
jdbc.password=
配置文件
<?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="jdbc.properties"/>
<!-- 指定 MyBatis 所用日志的具体实现 -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<environments default="mysql">
<!-- 环境配置,即连接的数据库。 -->
<environment id="mysql">
<!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
<transactionManager type="JDBC"/>
<!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/gec/mapper/usermapper.xml" />
<!--<mapper resource="com/gec/mapper/usermapper2.xml" />-->
</mappers>
</configuration>
- 编写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.gec.mapper.UserMapper">
<!--编写定制sql
id:定制sql方法的id名
parameterType:输入类型
private String name;
private String sex;
private Integer age;
-->
<!--增加操作,parameterType输入类型是user对象-->
<insert id="insert" parameterType="com.gec.pojo.User">
insert into tb_user(NAME,SEX,AGE) values (#{name},#{sex},#{age})
</insert>
</mapper>
- 测试操作数据以及引入抽取工具类
package com.gec.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MyBatisSessionUtils {
private static SqlSessionFactory sqlSessionFactory=null;
static {
InputStream inputStream= null;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
//根据全局配置文件,生成一个SqlSessionFactory对象
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession openSession()
{
return sqlSessionFactory.openSession();
}
}
package com.gec.test;
import com.gec.pojo.User;
import com.gec.utils.MyBatisSessionUtils;
import org.apache.ibatis.session.SqlSession;
public class MainTest {
public static void main(String[] args) {
insert();
}
public static void insert(){
SqlSession sqlSession= MyBatisSessionUtils.openSession();
User user = new User();
user.setName("dada2");
user.setAge("18");
user.setSex("b");
sqlSession.insert("com.gec.mapper.UserMapper.insert",user);
sqlSession.commit();
sqlSession.close();
}
}