MyBatis背景介绍
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
jdbc连接驱动的jar包:连接什么的数据库自行下载
mybatis所需的jar包:mybatis-3.5.2.jar
本文介绍用注解、配置文件这两种方式操纵数据库
添加jar包
选中项目右击→build path→ configura build path→ libraries→add external jars 将选中的jar包添加 →Apple and close
项目结构
mybatis-config.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>
<!-- 运行环境配置 -->
<!--default属性:指定使用哪一个运行环境 -->
<environments default="development">
<!--id属性:唯一标识一个运行环境 -->
<environment id="development">
<!-- 事务管理器配置,type="JDBC":mybatis框架默认使用jdbc事务 -->
<transactionManager type="JDBC" />
<!--数据源配置,type="POOLED":mybatis框架提供的连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /><!--不同的数据库,连接字符串是不一样的-->
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=EMIS" /> <!--databaseName为数据库名-->
<property name="username" value="root" /> <!-- 用户名-->
<property name="password" value="123" /> <!-- 密码 -->
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="annotation.Users"/> <!-- 加载注解类 -->
<mapper resource="xml/s.xml"/> <!-- 加载xml文件 -->
</mappers>
</configuration>
S.Java 实体类
package entity;
public class S {
private String id; //属性名要与数据库中的字段名一致
private String name;
public String getId()
{
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString()
{
return id.trim() + name.trim();
}
}
Users类
package annotation;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import entity.S;
public interface Users {
@Select("select * from s") //注解
public List<S> select();
@Insert("insert into s values(#{id},#{name})")
public int insert(S s);
@Delete("delete from s where name= #{name}") //占位符#{}相当于jdbc中的?
public int delete(S s);
@Update("update s set name = #{name} where id = #{id}")
public int update(S s);
}
s.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="s"> <!-- 映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。
当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句 -->
<!--返回的结果集-->
<select id="select" resultType="entity.S">
SELECT * from s
</select>
<insert id="insert" >
insert into s values(#{
id},#{
name})
</insert>
<update id="update" >
update s set name=#{
name} where id=#{
id}
</update>
<delete id="delete">
delete from s where id=#{
id}
</delete>
</mapper>
testannotation.Java
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 annotation.Users;
import entity.S;
public class TestAnnotation {
public static void main(String[] args) throws Exception{
//创建流来加载配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// mybatis的工厂类,读取配置文件内容
SqlSessionFactory sqlFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession ss = sqlFactory.openSession(); //创建一个sqlSession对象
//反射
Users user = ss.getMapper(Users.class);
// List<S> list = user.select();
// System.out.println(list);
S s = new S();
s.setId("1111");
s.setName("1111");
int i = user.delete(s);
ss.commit();//提交事务,insert,update,delete 时必须有这条语句,否则无法更新数据
ss.close();
System.out.println(i+"行受影响");
}
}
testxml.Java
// An highlighted block
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import entity.S;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class TestXML {
public static void main(String[] args) throws IOException {
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// mybatis的工厂类,读取配置文件内容
SqlSessionFactory sqlFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession ss = sqlFactory.openSession(); //创建一个sqlSession对象
// List<S> list = ss.selectList("s.select");
// System.out.println(list);
S s = new S();
s.setId("45");
//namespace.id调用
int i = ss.delete("s.delete", s);
ss.commit(); //提交事务,insert,update,delete 时必须有这条语句,否则无法更新数据
ss.close();
System.out.println(i+"行受影响");
}
}
由于本人也是初学者,难免有不足之处,还望斧正!