---------Mybatis註解-------java
import com.bdit.model.User; import org.apache.ibatis.annotations.*; import java.util.List; //使用註解方式開發 Mapper 接口 public interface IUserDao { //查詢全部的信息:使用註解 @Select("select * from user") @Results(id ="Map1",value ={ @Result(id =true,column ="id",property ="id"), @Result(column = "username",property ="username"), @Result(column ="age",property = "age"), @Result(column = "address",property ="address")}) public List<User>findAll(); //根據id去查找:使用註解 @Select("select * from user where id=#{id}") @ResultMap("Map1") public User findById(Integer id); //添加用戶:使用註解 @Insert("insert into user(username,age,address)values(#{username},#{age},#{address})") //查詢新增用戶的id @SelectKey(keyColumn ="id",keyProperty ="id",resultType =int.class, before =false,statement ={"select last_insert_id()"}) public int insert(User user); //更新用戶的信息:使用註解 @Update("update user set username=#{username},age=#{age},address=#{address}") public int update(User user); //刪除用戶的信息:使用註解 @Delete("delete from user where id=#{id}") public int delete(Integer id); //使用註解查詢總記錄數: @Select("select count(id) from user") public int totalCount(); //模糊查詢:使用註解 @Select("select * from user where username like #{username}") public List<User> findByName(String name); // @Insert:實現添加 // @Update:實現修改 // @Delete:實現刪除 // @Select:實現查詢 // @Result:實現結果集的封裝 // @Results:能夠與@Result 一塊兒使用,封裝多個結果集 // @ResultMap:實現引用@Results 定義的封裝 // @One:一對一結果封裝 // @Many:一對多結果封裝 // @CacheNamespace:二級緩存 // @SelectProvider:實現動態 SQL 映射 }
--------多表查詢---------sql
package com.bdit.dao; import com.bdit.model.Account; import org.apache.ibatis.annotations.*; import org.apache.ibatis.mapping.FetchType; import java.util.List; public interface IAccountDao { //查詢全部的帳戶:使用註解,並關聯用戶的信息 @Select("select * from Account") @Results(id = "Map",value ={ @Result(id =true,column ="zid",property ="zid"), @Result(column ="uid",property = "uid"), @Result(column ="money",property = "money"), @Result(column ="uid",property ="user",one=@One(select = "com.bdit.dao.IUserDao.findById",fetchType = FetchType.LAZY)) }) public List<Account> findAll(); // @Result 屬性說明: // id :是不是註解字段 true false // column:數據庫的列名 // property:屬性名 // one:須要使用@One 註解 // many:須要使用@Many 註解 // @One 註解(一對一),代理< association >標籤,是多表查詢的關鍵,在註解中用來指定返 回的單一對象 // @One 屬性說明: // select 指定用來多表查詢的 sqlmapper // fetchType:會覆蓋全局的配置參數 lazyLoadingEnabled // 使用格式: // @Result(column=」」,property=」」,one=@One(select=」」)) // @Many 註解(一對多),代替了<Collection>標籤,在註解中用來指定返回對象的集合 // 使用格式: // @Result(property=」」,column=」」,many=@Many(select=」」)) }
測試類數據庫
package com.bdit; import com.bdit.dao.IUserDao; import com.bdit.model.User; import org.apache.ibatis.annotations.SelectKey; 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 org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; //測試類 public class mybatisTest1 { private InputStream input; private SqlSessionFactory factory; private SqlSession session; private IUserDao iUserDao; @Before //封裝好的數據,初始化時加載 public void init()throws IOException { //1 、 讀取配置文件-->SqlMapConfig核心的配置文件 input = Resources.getResourceAsStream("SqlMapConfig.xml"); //二、建立SqlSessionFactoryBuilder構建者的對象。 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); // 三、使用構建者對象建立工廠對象:SqlSessionFactory factory = builder.build(input); //四、使用SqlSessionFactory對象建立SqlSession對象 //4.1 =設置事務爲自動提交 session = factory.openSession(true); //五、使用SqlSession對象建立Dao接口的代理對象 iUserDao= session.getMapper(IUserDao.class); } @After public void destory()throws IOException { //提交事務 --上面設置爲自動提交 //session.commit(); //關閉釋放資源 session.close(); input.close(); } //查詢帳全部的用戶 @Test public void find(){ List<User>list=iUserDao.findAll(); for(User ss:list) { System.out.println(ss); } } //跟句id去查找用戶的信息 @Test public void find1(){ User user=iUserDao.findById(1); System.out.println(user); } //添加用戶的信息 @Test public void insert(){ User user=new User(); user.setUsername("臥龍"); user.setAge("23"); user.setAddress("兗州"); int i=iUserDao.insert(user); if(i>0){ System.out.println("添加成功"); } System.out.println("新增用戶的id"+user.getId()); } //使用註解完成用戶的更新操做 @Test public void method(){ User user=iUserDao.findById(8); user.setUsername("文傑"); int i=iUserDao.update(user); if(i>0){ System.out.println("更新成功"); } } //使用註解刪除用戶的信息 @Test public void delete(){ int i=iUserDao.delete(8); if(i>0){ System.out.println("刪除成功"); } } //查詢總記錄數 @Test public void total(){ int i=iUserDao.totalCount(); System.out.println(i); } //模糊查詢 @Test public void username(){ List<User>list=iUserDao.findByName("%文%"); for(User user:list){ System.out.println(user); } } } package com.bdit; import com.bdit.dao.IAccountDao; import com.bdit.model.Account; 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 org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; //測試類 public class mybatisTest2 { private InputStream input; private SqlSessionFactory factory; private SqlSession session; private IAccountDao iAccountDao; @Before //封裝好的數據,初始化時加載 public void init()throws IOException { //1 、 讀取配置文件-->SqlMapConfig核心的配置文件 input = Resources.getResourceAsStream("SqlMapConfig.xml"); //二、建立SqlSessionFactoryBuilder構建者的對象。 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); // 三、使用構建者對象建立工廠對象:SqlSessionFactory factory = builder.build(input); //四、使用SqlSessionFactory對象建立SqlSession對象 //4.1 =設置事務爲自動提交 session = factory.openSession(true); //五、使用SqlSession對象建立Dao接口的代理對象 iAccountDao = session.getMapper(IAccountDao.class); } @After public void destory()throws IOException { //提交事務 --上面設置爲自動提交 //session.commit(); //關閉釋放資源 session.close(); input.close(); } //查詢帳全部的帳戶:並關聯全部的用戶 @Test public void find(){ List<Account>list=iAccountDao.findAll(); for(Account ss:list){ //只查詢全部的帳戶: System.out.println(ss.getZid()+"=="+ss.getUid()+"=="+ss.getMoney()); System.out.println(ss.getUser()); } } }