MyBatis背景紹介
MyBatisは、通常のSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた永続化レイヤーフレームワークです。MyBatisは、JDBCコードとパラメーターの手動設定と結果セットの取得のほとんどすべてを排除します。MyBatisは、シンプルなXMLまたは注釈を使用して、構成とプリミティブマッピング、マッピングインターフェース、およびJava POJO(プレーンな通常のJavaオブジェクト)をデータベース内のレコードに使用します。
各MyBatisアプリケーションは主にSqlSessionFactoryのインスタンスを使用します。SqlSessionFactoryのインスタンスはSqlSessionFactoryBuilderを介して取得できます。SqlSessionFactoryBuilderはxml構成ファイルまたは事前定義された構成クラスのインスタンスから取得できます。
xmlファイルからSqlSessionFactoryのインスタンスを作成するのは非常に簡単です。この構成ではクラスパスリソースを使用することをお勧めしますが、file://で始まるファイルパスまたはURLで作成されたインスタンスを含む、任意のReaderインスタンスを使用できます。MyBatisにはユーティリティクラスがあります----リソース、多くのメソッドがあり、クラスパスや他の場所からリソースを簡単にロードできます。
JDBC接続ドライバーjarパッケージ:mybatisが自分で
必要とするjarパッケージをダウンロードするために接続するデータベース:mybatis-3.5.2.jar
この記事では、注釈と構成ファイルを使用してデータベースを操作する方法を紹介します
jarパッケージの追加
プロジェクトを選択し、右クリック→ビルドパス→configuraビルドパス→ライブラリ→外部jarを追加選択したjarパッケージを追加→アップル
プロジェクト構造
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();
}
}
ユーザークラス
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+"行受影响");
}
}
私も初心者なので必然的に欠点があります。