一、MyBatis簡介
1.1、概述
MyBatis 是支援客製化 SQL、預存程序以及進階映射的優秀的持久層框架。
MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定參數以及取得結果集。
MyBatis 可以對設定和原生Map使用簡單的 xml 或註解,將介面和 java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對應成資料庫中的記錄。
1.2、ORM
orm工具的基本思想
無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:
1. 從配置文件(通常是XML配置文件中)得到 sessionfactory.
1. 從配置文件(通常是XML配置文件中)得到 sessionfactory.
1. 2. 由sessionfactory 產生session
3. 在session 中完成對資料的增刪改查和事務提交等.
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 = '用户表';
/*** @Title: User.java
* @Package com.pb.mybatis.po
* @Description: TODO(用戶類)
* @author 劉楠
* @date 2015-10-2015:0-206 42:13
* @version V1.0
*/package com.pb.mybatis.po;import java.util.Date;/**
* @ClassName: User
* @Description: TODO(用戶類別)
* @author 劉楠
* @date 2015-10-26 下午5:42:13
* @date 2015-10-26 下午5:42:13
* @date 2015-10-26 下午5:42:13
* @date 2015-10-26 下午5:42:13
* @date 2015-10-26 5:42:13
**/public class User {
/**
* id(使用者ID) */
/**
* name(使用者名稱) */
private int id ; /**
*age (使用者年齡) */
私人字串名稱; /**
* birthday(使用者生日) */
私有整數年齡; /**
* address (使用者地址) */
私人日期;私人字串位址; /**
* @return id */
public int getId() { return id;
} /**
* @param id 要設定的 id */ } /**
* @return 名字 */
public String getName() { 回名;
} /**
* @param name 要設定的名稱 */
/**
* @return 年齡 */
public int getAge() { 返回年齡;
} /**
* @param Age 要設定的年齡 */
* @return 生日 */
public Date getBirthday() { return brithday;
} /**
* @param brithday 要設的生日 */
public void setBirthday(日期生日) { this.birthday =birthday(day" getAddress() {回郵地址;
} /**
* @return 地址 */
public void setAddress(String address) { this.address = address;
}
this.address = address;
}
this.L一個類別介面
/ **
*5-date 2011 10-26 下午5:45:13
* @version V1.0
*/public interface UserMapper { /**
* @ClassName: UserMapper
* @Description: TODO(使用者類別資料存取介面)
* @author 劉楠
* @date 2015-10-26 下午5:45:13*/
public User selectUserById(int id) ;
}
3.3、與db.properties
db.properties
#2g =jdbc:mysql: //localhost:3306/mybatis?characterEncoding=utf8#用戶名
username=root
#密碼
passWord=root
3.4、建立映射文件與configuration.xml配置
UserMapper.xml
br/> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/ dtd/mybatis-3-mapper.dtd">
configuration.xml
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(用一句話描述該檔案做什麼)
* @author 劉楠
* @date 2015- 10-26 下午5:55:54
* @version V1.0
*/package com.pb.mybatis.test;導入java.io.IOException;導入java.io.Reader;導入org.apache.ibatis.io.Resources;導入org.apache.ibatis. session.SqlSession;導入org.apache.ibatis.session.SqlSessionFactory;導入org.apache.ibatis.session.SqlSessionFactoryBuilder;導入com.pb.mybatis.dao.UserMapper;導入com.pb.mybatis.po.User; *
* @ClassName: Test1
* @Description: TODO(測試類別)
* @author 劉楠
* @date 2015-10-26 下午5:55:54
* @date 2015-10-26 下午5:55:54
* @date 2015-10-26 下午5:55:54
* @date 2015-10-26 5:55:54
**/public class Test1 { //Session工廠
static SqlSessionFactory sqlSessionFactory=null; //Session
素
public static void main(String[ ] args) {
selectById();
} /**
*
* @Title: selectById
* @Description: TODO(依ID */ 嘗試{
reader=Resources.getResourceAsReader (「設定.xml」); //建立SqlSessionFactory
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); //取得使用者介面物件
UserMapper userMapper=session.getMapper(UserMapper.class); /呼叫查詢方法
User user=userMapper.selectUserById(1);
System.out.println(user.getName()+"getuser+.A. ).toLocaleString()+"..."+user.getAddress());
} catch (IOException e) {
}
3.6、使用別名
? “-//mybatis.org//DTD Mapper 3.0//EN”
“http://mybatis.org/dtd/mybatis-3-mapper.dtd”>
測試類別不變
測試類別、實現基本的增、刪除、改、查4.1、在介面中增加,模糊查詢,添加,修改,刪除的方法, /*** @Title: UserMapper.java* @Package com.pb.mybatis.dao
br/> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4.3、測試類別 /**
* @Description: TODO(用一句話描述該檔案做什麼)
* @author 劉
*5-date 2011 10-26 下午5:45:13
* @version V1.0
*/package com.pb.mybatis. dao;import java.util.Date;import java.util.List;import com.pb.mybatis.po.User;/**
* @ClassName: UserMapper
* @Description: TODO(使用者類別資料存取介面)
* @author 劉楠
* @date 2015-10-26 下午5:45:13*/public interface UserMapper { /**
*
* @Title: selectUserById
* @Description: TODO(根據使用者ID 查詢*/
public User /**
*
* @Title: selectUserLikeName
* @Description: TODO(根據名稱模糊查詢*/
public User selectUserById(int id); /**
*
* @Title: addUser
* @Description: TODO(新增使用者)
*/
public List
/**
*
* @Title: updateUser
* @Description: TODO(修改用戶)
*/
/**
*
* @Title: deleteUser
* @Description: TODO(刪除使用者)
* @Description: TODO(刪除使用者)
* id*/ */
public void updateUser(User user); /**&*/
public void deleteUser(int id);
}
.
"http://mybatis.org/ dtd/mybatis-3-mapper.dtd">
where id=#{id}
where id=#{id}
* @Title: Test1.java
* @Package com.pb.mybatis.test
* @Description: TODO(用一句話描述該檔案做什麼)
* @authorhor 劉horate * 2015-10-26 下午5:55:54
* @version V1.0
*/package com.pb.mybatis.test;導入java.io.IOException;導入java.io.Reader;導入java.text.ParseException;導入java.text.SimpleDateFormat;導入java.util .Date;導入java.util.List;導入org.apache.ibatis.io.Resources;導入org.apache.ibatis.session.SqlSession;導入org.apache.ibatis.session.SqlSessionFactory;導入org.apache.ibatis. session.SqlSessionFactory? / Session
static SqlSession session = null; // 字元流
static Reader reader = null; public static void main(String[] args) { ? **
* @ClassName: Test1
*
* @Description: TODO(測試類別)
*
* @author 劉楠
*
* @date 2015-10-265:5555:54 下午
*
*
:54*/
public static void selectById() { // 載入設定檔
try {
reader = Resources.getResourceAsReader( sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 開啟Session
) (); // 取得使用者介面物件
UserMapper userMapper = session.getMapper(UserMapper.class); userMapper.selectUserById(1);
System.out.println(user.getName() + "..." + user.getAge() + "..."
+ user. getBirthday().toLocaleString() + "..."
); } catch (IOException e) {
e.printStackTrace();
}
} /**
*
* @Title: selectById
*
* @Description: TODO(依據ID查找使用者) void */
try {
reader = Resources.getResourceAsReader("configuration.xml") ; // 建立SqlSessionFactory
sqlSessionFactory = new SqlSession yBuilder().build(reader) session = sqlSessionFactory.openSession(); // 取得使用者介面物件
UserMapper userMapper = session.getMclass); // 呼叫查詢方法
List
}
} catch (IOException e) {
e.printStackTrace( );
}
} /**
*
* @Title: selectLikeName
*
* @Description: TODO(依使用者名稱模糊查詢) void */
public static void addUser() { // 載入檔案
try {
y
sqlSessionFactory = new SqlSession sqlSessionFactory = new SqlSession FactoryBuilder().build(reader); // 開啟Session
session = sqlSessionFactory.openSession(); // 取得使用者介面物件
User // 聲明新使用者
User user =new User();
user.setName("呵呵" );
user.setAge(22);
String d="1984-09-23 20:23:22"; -MM-DD HH:mm:ss");
Date date=sdf.parse(d);
user.setBirthday(date);
user.setAddress( System.out.println("插入後的ID"+user.getId()); //提交事務 session.commit();
} catch (IOException e);
} catch (IOException e); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace();
}
} /**
*
* @Title: updateUser
* @Description: TODO(修改使用者)
*/
try {
reader = Resources.getResourceAsReader("configuration.xml"); // 建立SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 開啟(reader); ion(); // 取得使用者介面物件
UserMapper userMapper = session.getMapper(UserMapper.class / 呼叫查詢方法
User user = userMapper.selectUserById(6);
user.setName("想起來叫什麼了"); //更新 userMapper.updateUser(user) ; //提交事務 session.commit();
} catch (IOException e );
} public static void detleUser() { // 載入設定檔
try { .getResourceAsReader("configuration.xml"); // 建立SqlSessionFactory
ion
session = sqlSessionFactory.openSession(); // 取得使用者介面物件
session.getMapper(UserMapper.class);
//刪除
session.commit();
} catch (IOException e) {
。