前言:
mybatis.xml : 文件配置
PersonMapper.xml : sql语句
Person.java : 对应数据库列名的实体类
TestPerson.java : 测试类
lib :mybatis的核心包、依赖包
mysql-connector-java-5.1.8-bin.jar mysql连接包
目录结构
1.1 配置文件准备
jdbc.properties:
jdbc.DriverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/person?useUnicode=true&characterEncoding=utf8
jdbc.username=#
jdbc.password=#
1.2 添加mybatis-3-config.dtd和mybatis-3-mapper.dtd约束
mybatis.xml :
有的直接编译xml会不出提示,这就很难受,在这里需要添加两个步骤
1> 复制-//mybatis.org//DTD Config 3.0//EN
2>Window -------》preferences
PersonMapper.xml
跟mybatis一样,如果不提示代码补全的话,添加约束
复制:-//mybatis.org//DTD Mapper 3.0//EN
注:跟上述 mybatis 有区别 一个是 config 一个是 Mapper
注意和mybatis添加约束时的区别
两个约束添加成功后
2.1 mybatis.xml、PersonMapper.xml代码
mybatis.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">
<!-- 核心配置对象
mybatis的核心配置文件主要配置数据源,数据库相关的配置 -->
<configuration>
<!-- 加载jdbc.properties文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 可以给java当中的实体类设置别名,别名就是类名的大写或小写,主要为了后面方便调用
-->
<typeAliases>
<typeAlias type="com.zk.mybatis.model.Person"/>
</typeAliases>
<!-- 配置将来访问的数据源,数据环境
数据源是可以配置多个的,默认使用开发者模式来连接数据库 -->
<environments default="development">
<environment id="development">
<!-- 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<!-- 具体的数据源 使用数据库连接池,来获取jdbc连接,获取数据库连接需要设置
驱动名称、数据库地址、数据库用户名、密码 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.DriverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper.xml导入 -->
<mappers>
<mapper resource="PersonMapper.xml"/>
</mappers>
</configuration>
PersonMapper.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" >
<!-- mapper代表和数据库哪一张表或哪一个实体类进行映射
namespace代表该mapper的唯一标识,通常情况下使用相对应的实体类名
-->
<mapper namespace="com.zk.mybatis.model.Person">
<!-- id:唯一标识,parameterType:参数类型 resultType:返回值类型-->
<select id="findById" parameterType="int" resultType="Person">
select id,name from person where id = #{id};
<!-- 一般用#{}获得参数值 -->
</select>
<!-- 模糊查询 -->
<select id="findByLike" parameterType="string" resultType="Person">
select id,name from person where name like '%${id}%';
<!-- 模糊查询此处用${}获得参数值 -->
</select>
<!-- 插入数据 -->
<insert id="insertPerson" parameterType="Person">
insert into person (id,name) values(#{id},#{name})
</insert>
</mapper>
Person.java person实体类
package com.zk.mybatis.model;
public class Person {
private int id;
private String name;
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;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + "]";
}
}
3.1 测试类
package com.zk.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.zk.mybatis.model.Person;
public class TestPerson {
public static void main(String[] args) throws Exception {
//1、得到mybatis.xml文件的输入流
InputStream in = Resources.getResourceAsStream("mybatis.xml");
//2、创建SqlSessionFactory
//使用建造者模式创建会话工厂,mybatis的会话工厂可以理解为jdbc中的连接池
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3、sqlsession会话理解成jdbc当中的connection
SqlSession session = factory.openSession();
//4、执行
int id = 1;
Person person = session.selectOne("com.zk.mybatis.model.Person.findById", id);
System.out.println(person);
List<Person> list = session.selectList("com.zk.mybatis.model.Person.findByLike", "刘");
System.out.println(list);
Person person2 = new Person();
person2.setId(4);
person2.setName("广坤");
session.insert("com.zk.mybatis.model.Person.insertPerson", person2);
//5、对于增删改操作需要提交事务才能执行
session.commit();
//6、session 是资源链接,用完要进行关闭
session.close();
}
}
个人总结:
mybatis 的作用主要为了底层数据处理,用反射机制直接获得对象。
第一次部署的时候可能会觉得麻烦,不过以后用起来应该会很爽,只需要改动sql就可。
注:第一次部署,主要注意mybatis.xml 不要写错,尽量CV大法