1. MyBatis の概要
1.1. 概要
MyBatis は、カスタマイズされた SQL、ストアド プロシージャ、および高度なマッピングをサポートする優れた永続層フレームワークです。
MyBatis は、ほとんどすべての JDBC コード、パラメーターの手動設定、結果セットの取得を回避します。
MyBatis は、構成に単純な XML またはアノテーションを使用し、ネイティブ マップを使用してインターフェイスと Java POJO (Plain Old Java Objects、通常の Java オブジェクト) をデータベース内のレコードにマッピングできます。
1.2、ORM
ORM ツールの基本的な考え方
Hibernate と mybatis のどちらを使用したことがあっても、それらには 1 つの共通点があることがわかります:
1. 設定ファイル (通常は XML 設定) から sessionfactory.
を取得します。ファイル) 2. sessionfactory でセッションを生成します
3. セッション内のデータの追加、削除、変更、トランザクションの送信を完了します。
4. 使用後はセッションを閉じます。
5. Java オブジェクトとデータベースの間にはマッピング設定ファイルがあり、通常は XML ファイルです。
2. 環境セットアップ
2.1. 必要な Jar パッケージ
MyBatis を使用するには、mybatis-x.x.x.jar ファイルをクラスパスに置くだけです。
2.2. データベースを確立してデータを挿入します
ここでは MySQL データベースを使用します:
CREATE TABLE `mybatis`.`user` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `name` VARCHAR(45) NOT NULL DEFAULT '无名氏' COMMENT '用户名', `age` TINYINT(3) NOT NULL DEFAULT 21 COMMENT '用户年龄', `birthday` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT '用户生日', `address` VARCHAR(256) NOT NULL DEFAULT '北京' COMMENT '用户地址', PRIMARY KEY (`id`) COMMENT '') COMMENT = '用户表';
insert into user(id,name,age,birthday,address)values(1,'张三',23,'1990) - 01-23 20:24:21','上海'),(2,'李思',18,'1986-12-23 12:13:11','広州'),(3,'
2.3. Web プロジェクトを確立し、Jar パッケージをプロジェクトに導入します
3. 設定ファイル、エンティティ クラス、インターフェイスを確立します
3.1. エンティティ クラスを確立します
/*** @Title: User.java
* @Package com.pb.mybatis.po
* @Description: TODO (ユーザークラス)
* @author Liu Nan
* @date 2015-10-26 5 pm: 42:13
* @バージョン V1.0
*/package com.pb.mybatis.po;import java.util.Date;/**
* @ClassName: User
* @Description: TODO (ユーザークラス)
* @author Liu Nan
* @date 2015-10-26 5:42:13 pm
**/public class User {
/**
* id (ユーザーID)*/
private int id ; /**
* 名前(ユーザー名)*/
private 文字列名; /**
*年齢(ユーザーの年齢)*/
プライベート int age; /**
*誕生日(ユーザーの誕生日)*/
プライベート 日付 誕生日; /**
* アドレス (ユーザーアドレス)*/
プライベート文字列アドレス。 /**
* @IDを返す */
public int getId() { return id;
} /**
* @param id 設定するID */
public void setId(int id) { this.id = id;
} /**
* @return 名前 */
public String getName() { return name;
} /**
* @param name 設定する名前 */
public void setName(String name) { this.name = name;
} /**
* @return the age */
public int getAge() { return age;
} /**
* @param age 設定する年齢 */
public void setAge(int age) { this.age = age;
} /**
* @誕生日を返す */
public Date getBirthday() { return brithday;
} /**
* @param brithday 設定する誕生日 */
public void setBirthday(Date Birthday) { this.birthday = Birthday;
} /**
* @アドレスを返す */
public String getAddress() { 返信先アドレス;
} /**
* @param address 設定するアドレス */
public void setAddress(String address) { this.address = address;
}
}
3.2、写实体类接口
/** * @Title: UserMapper.java
* @Package com.pb.mybatis.dao
* @Description: TODO (ファイルの動作を一文で説明)
* @著者 Liu Nan
* @日付 2015- 10-26 5:45:13 pm
* @バージョン V1.0
*/package com.pb.mybatis.dao;import com.pb.mybatis.po.User;/**
* @ClassName: UserMapper
* @Description: TODO (ユーザー クラス データ アクセス インターフェイス)
* @author Liu Nan
* @date 2015-10-26 5:45:13 pm
**/public Interface UserMapper { /**
*
* @Title: selectUserById
* @Description: TODO (ユーザー ID に基づくクエリ)
* @param id
* @return User*/
public User selectUserById(int id) ;
}
3.3、与db.properties
db.properties
#データ库基本構成
#驱動
driver=com.mysql.jdbc.Driver
#连接url
url=jdbc:mys質問文: //localhost:3306/mybatis?characterEncoding=utf8#用户名
username=root
#密码
passWord=root
3.4、建立映写文子与configuration.xml構成
UserMapper.xml
br/> PUBLIC "-//mybatis.org//DTD マッパー 3.0//EN"
"http://mybatis .org/dtd/mybatis-3-mapper.dtd">
configuration.xml
xml version="1.0"coding="UTF-8"?>br/> PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd /mybatis-3-config.dtd">
3.5. ID に基づく単純なクエリ
/*** @Title: Test1.java
* @Package com.pb.mybatis.test
* @Description: TODO (このファイルの機能を一文で説明します)
* @著者 Liu Nan
* @日付 2015- 10-26 5:55:54 pm
* @バージョン V1.0
*/package com.pb.mybatis.test;import java.io.IOException;import java.io.Reader;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.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/* *
* @ClassName: Test1
* @Description: TODO (テストクラス)
* @author Liu Nan
* @date 2015-10-26 5:55:54 pm
**/public class Test1 { //Session工厂
static SqlSessionFactory sqlSessionFactory=null; //セッション
static SqlSession session=null; //文字流
static Reader Reader=null;
public static void main(String[] args) {
selectById();
} /**
*
* @Title: selectById
* @Description: TODO (ID に基づいてユーザーを検索)
void*/
public static void selectById(){ //加ダウンロード構成文件
{
reader=Resources.getResourceAsReader を試してください(「構成.xml」); //建立SqlSessionFactory
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); //打开Session
session=sqlSessionFactory.openSession(); //获取用户接口对象
UserMapper userMapper=session.getMapper(UserMapper.class); //调用查询方法
User user=userMapper.selectUserById(1);
System.out.println(user.getName()+"..."+user.getAge()+"..."+user.getBirthday ().toLocaleString()+"..."+user.getAddress());
} catch (IOException e) {
e.printStackTrace();
}
}
br/> PUBLIC "-//mybatis.org//DTD マッパー 3.0//EN"
"http://mybatis .org/dtd/mybatis-3-mapper.dtd">
where id=#{id}< ;/update>
where id=#{id}
4.3、テストクラス
/**
* @Title: Test1.java
* @Package com.pb.mybatis.test
* @Description: TODO (このファイルが何をするのかを一文で説明します)
* @author Liu Nan
* @date 2015-10-26 5:55:54 pm
* @バージョン V1.0
*/package com.pb.mybatis.test;import java.io.IOException;import java.io.Reader;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util .Date;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.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/**
* @ClassName: Test1
*
* @Description: TODO (テストクラス)
*
* @author Liu Nan
*
* @date 2015-10-26 5:55:54 PM
*
*
*/public class Test1 { // Session工厂
static SqlSessionFactory sqlSessionFactory = null; // Session
static SqlSession session = null; // 字符流
static Reader Reader = null; public static void main(String[] args) {
} /**
*
* @Title: selectById
*
* @Description: TODO (ID に基づいてユーザーを検索) void*/
public static void selectById() { // 追加配置文件
try {
reader = Resources. getResourceAsReader("configuration.xml "); // 構築SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 打开Session
session = sqlSessionFactory.openSession(); // 取用户インターフェイス对象
UserMapper userMapper = session.getMapper(UserMapper.class); //调用查询查询ユーザーユーザー= usermapper.seerctuserbyid(1); getBirthday().toLocaleString() + "..."
+ user.getAddress());
} catch (IOException e) {
e.printStackTrace();
}
} /**
*
* @Title: selectLikeName
* *
* @Description: TODO (ユーザー名に基づくあいまいクエリ) void*/
public static void selectLikeName() { // 追加構成文件
try {
reader = Resources.getResourceAsReader("configuration.xml"); // 構築SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 打开Session
session = sqlSessionFactory.openSession(); // 取用户インターフェイス对象
UserMapper userMapper = session.getMapper(UserMapper.class); // 调用查询方法
List
System.out.println(user.getName() + "..." + user.getAge() + "..." + user.getBirthday().toLocaleString() + " ...「
+ user.getAddress());
}
} catch (IOException e) {
e.printStackTrace();
}
} /**
*
* @Title: addUser
* @Description: TODO (ユーザー追加)
void*/
public static void addUser()構成ファイルをロードします構成ファイルをロードしますactory = new SqlSessionFactoryBuilder().build(reader); // セッションを開きます
session = sqlSessionFactory.openSession();使用する 使用する 使用する 使用する 使用する ‐ を通じて ' s ' s 's ‐ ‐ ‐ ‐‐ ‐ ユーザー user =new User();
User.setName("へへ" ;
Date date=sdf.parse (d); of id "+user.getid()); //トランザクションsession.commit(); );
}
} /**
*
* @Title: updateUser
* @Description: TODO (ユーザー変更)
void*/
public static void updateUser() { //設定ファイルをロード
Resources.getResourceAsReader("configuration.xml") // SqlSessionFactory をビルド
sqlSessionFactory = new SqlSessionFactoryBuilder( ).build(reader); // ユーザーインターフェイスオブジェクトを取得します UserMapper userMapper = session.getMapper(UserMapper.class); / クエリメソッドを呼び出します User user = userMapper.selectUserById(6); user.setName("名前"); user.setAddress("Magic City Shanghai"); userMapper.updateUser(user) ; ; // 設定ファイルをロードします
try {
Reader = Resources .getResourceAsReader ( "構成.xml"); SqlSessionFactoryを確立します= new sqlsessionfactorybuilder()e.printStackTrace();