mybatis 的簡單使用,mybatis簡單使用
需要用到的包:(這裡只是其中一個版本,其他的百度)
mysql-connector-java-5.1.6-bin
mybatis-3.2.2
先看項目目錄:
設定檔mybatisconfig.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 用XML映射的時候必須配此項!指定mappers裡面的傳回值對應的實體類 --><!-- <typeAliases> <typeAlias alias="User" type="com.miquan.mybatis.bean.User"/> </typeAliases> --> <!-- JDBC配置 --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/weixinface"/><property name="username" value="root"/><property name="password" value=""/></dataSource></environment></environments><!-- mappers,每個實體類對應著一個xml --><mappers><mapper resource="com/miquan/mybatis/bean/User.xml"/></mappers></configuration>
實體類User.java:
package com.miquan.mybatis.bean;public class User {private int id;private String userName;private String password;public User(int id, String userName, String password) {super();this.id = id;this.userName = userName;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
User.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace對應著介面類 --><mapper namespace="com.miquan.mybatis.inter.IUserOperation"><!-- <select id="selectById" parameterType="int" resultType="User">select * from User where id = #{id}</select> --></mapper>
IUserOperation.java:
package com.miquan.mybatis.inter;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 com.miquan.mybatis.bean.User;public interface IUserOperation {@Select("select * from User where id = #{id}")public User selectById(int id);@Select("select * from User where userName = #{userName}")public List<User> selectUsers(String userName);@Insert("insert into User values(null, #{userName}, #{password})")public boolean addUser(User user); @Delete("delete from User where id = #{id}")public boolean delUser(int id);@Update("update User "+ "set userName = #{userName}, "+ "password = #{password} "+ "where id = #{id}")public boolean updateUser(User user);}
最後進行測試:Test.java:
package com.miquan.mybatis.test;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.miquan.mybatis.bean.User;import com.miquan.mybatis.inter.IUserOperation;public class Test {static SqlSession session;public static void main(String[] args) {try {//擷取sessionInputStream is = Resources.getResourceAsStream("mybatisconfig.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);session = sqlSessionFactory.openSession();//XML配置對應用法//User user = session.selectOne("com.miquan.mybatis.bean.UserDB.selectById", 1);//System.out.println(user.toString());//介面調用法//////注意:insert、delete和update方法調用之後必須commit才能真正的改變資料IUserOperation userOperation = session.getMapper(IUserOperation.class);//查//User user = userOperation.selectById(1);//System.out.println(user.toString());//尋找List//List<User> users = userOperation.selectUsers("miquan");//System.out.println(users.size());//增//User user = new User();//user.setUserName("zhiquan");//user.setPassword("999");//userOperation.addUser(user);//session.commit();//刪//userOperation.delUser(7);//session.commit();//改User user = new User(8, "qiantu", "shaxppp");userOperation.updateUser(user);session.commit();} catch (Exception e) {e.printStackTrace();} finally {try {session.close();} catch (Exception e) {e.printStackTrace();} }}}
簡單的增刪查改可以實現了。
myBatis的優缺點?
1.優點
簡單:
易於學習,便於使用,通過文檔和原始碼,可以比較完全的掌握它的設計思路和實現。
實用:
提供了資料對應功能,提供了對底層資料訪問的封裝(例如ado.net),提供了DAO架構,可以使我們更容易的開發和配置我們的DAL層。
靈活:
通過sql基本上可以實現我們不使用資料訪問架構可以實現的所有功能,或許更多。
功能完整:
提供了串連管理,緩衝支援,線程支援,(分布式)事物管理,通過配置作關聯性物件映射等資料訪問層需要解決的問題。提供了DAO支援,並在DAO架構中封裝了ADO.NET,NHibernate和DataMapper。
增強系統的可維護性:
通過提供DAL層,將商務邏輯和資料訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
2.缺點
滯後性:
還沒有明確對.NET2.0的支援。最新版本在2.0下編譯可以,但有些單元測試不能通過。
不成熟,工程實踐較少:
IbatisNet在實際項目中的使用較少。 只是理論上可行.
半ORM,工具支援較少:
需要我們自己寫sql,並且.NET下還未發現可以自動產生業務層類和設定檔的工具,這點和NHibernate不一樣,NHibernate會為我們的資料庫直接產生sql,並有一些協助工具輔助。因此使用Ibatis比NHibernate要多做一些工作。
有關spring mvc + mybatis的簡單增刪改查,急,
取值跟jsp一樣吧,顯示用request.setAttribute