日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mybatis学习笔记(2)两种配置实现增删改查

發布時間:2025/3/20 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis学习笔记(2)两种配置实现增删改查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 第二天學習mybatis,發現框架的存在確實是省了我們很多時間,我們完全可以把一些操作簡化,或者實現簡單的封裝提供我們使用。昨天是跟著教程云里霧里的實現了配置,今天再次使用就方便很多。
String resource="conf.xml";//使用類加載mybatis驅動文件,(他也加載關聯的附帶文件)InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);//構建sqlsession工廠SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
  • 首先記得昨天創建工廠時候這么亢長的代碼吧,我們將他封裝起來,讓這個封裝返回一個SqlSession對象,創建returnsqlsession類
    封裝部分的代碼為:
package com.test.test1;import java.io.InputStream;import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class returnsqlsession {public static SqlSessionFactory getSqlSessionFactory(){String resource="conf.xml";InputStream in=returnsqlsession.class.getClassLoader().getResourceAsStream(resource);SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);return factory;}public static SqlSession getSqlSession(){//返回sqlsessionreturn getSqlSessionFactory().openSession(); }/*** 獲取SqlSession* @param isAutoCommit * true 表示創建的SqlSession對象在執行完SQL之后會自動提交事務* false 表示創建的SqlSession對象在執行完SQL之后不會自動提交事務,這時就需要我們手動調用sqlSession.commit()提交事務* @return SqlSession*/public static SqlSession getSqlSession(boolean isAutoCommit) {return getSqlSessionFactory().openSession(isAutoCommit);} }

方法一:xml配置
然后,我們要現在xml中添加數據庫的語句userMapper.xml內容如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN">-<mapper namespace="userMapper"><!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型 resultType="me.gacl.domain.User"就表示將查詢結果封裝成一個User類的對象返回 User類就是users表所對應的實體類 --><!-- 根據id查詢得到一個user對象 --><select resultType="com.test.mybits.User" parameterType="Integer" id="getuser">select * from users where id=#{id} </select><!-- 增刪改查 --><!-- 增 indesert --><insert parameterType="com.test.mybits.User" id="adduser">insert into users(name,age) values(#{name},#{age}) </insert><delete parameterType="Integer" id="deleteuser">delete from users where id=#{id} </delete><update parameterType="com.test.mybits.User" id="updateuser">update users set name=#{name},age=#{age} where id=#{id} </update><select resultType="com.test.mybits.User" id="datesearch">select * from users </select></mapper>

建議不要一次全部寫完,可以一條一條寫,并且也可以知道那對拿錯,可以即使修正。
接著,在測試類中進行逐步測試:

package com.test.test1;import java.io.IOException; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.test.mybits.User;public class test2 {public static void testadd(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);//默認自動提交事務String statement="userMapper.adduser";User user=new User();user.setname("abch");user.setage(25);int result=sqlsession.insert(statement, user);sqlsession.close();System.out.println(result); }public static void testdelete(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);String statement="userMapper.deleteuser";int result=sqlsession.delete(statement,3);sqlsession.close();System.out.println(result);}public static void testupdate(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);String statement="userMapper.updateuser";User user=new User();user.setid(1);user.setage(19);user.setname("賽爺哈哈");int reslut=sqlsession.update(statement, user);sqlsession.close();System.out.println(reslut);}public static void testsearch(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);String statement="userMapper.datesearch";List list=sqlsession.selectList(statement); sqlsession.clearCache();System.out.println(list);}public static void main(String[] args) throws IOException{// testadd();//testdelete();//testupdate();testsearch();} }

配置的時候注意查詢需要的類型,以及返回的類型,有些操做不支持返回類型。
方法二:注解配置
創建com.test.mapper包。創建userMapper2.java接口
內容為:

package com.test.mapper;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.test.mybits.User;public interface userMapper2 {@Insert("insert into users(name,age) values(#{name},#{age})")public int add(User user);//使用@Delete注解指明deleteById方法要執行的SQL@Delete("delete from users where id=#{id}")public int deleteById(int id);//使用@Update注解指明update方法要執行的SQL@Update("update users set name=#{name},age=#{age} where id=#{id}")public int update(User user);//使用@Select注解指明getById方法要執行的SQL@Select("select * from users where id=#{id}")public User getById(int id);//使用@Select注解指明getAll方法要執行的SQL@Select("select * from users")public List getAll();}

注解里面放方法,下面再聲明一個共有函數。
再測試類中,具體使用如下:

package com.test.test1;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.test.mapper.userMapper2; import com.test.mybits.User;public class test3 {public static void testadd(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);//得到userMapper2接口的實現類對象,userMapper2接口的實現類對象由sqlsession.getMapper(UserMapper2.class)動態構建出來userMapper2 mapper = sqlsession.getMapper(userMapper2.class);User user=new User();user.setname("嗚嗚嗚我真菜");user.setage(17);int add=mapper.add(user);sqlsession.close();System.out.println(add); }public static void testupdate(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);userMapper2 mapper=sqlsession.getMapper(userMapper2.class);User user=new User();user.setage(155);user.setid(4);user.setname("白龍吟");int update=mapper.update(user);sqlsession.close();System.out.println(update);}public static void testdelete(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);userMapper2 mapper=sqlsession.getMapper(userMapper2.class);int id=7;int delete=mapper.deleteById(id);sqlsession.close();System.out.println(delete);}public static void getuser(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);userMapper2 mapper=sqlsession.getMapper(userMapper2.class);int id=6;User user=mapper.getById(id);sqlsession.close();System.out.println(user);}public static void getalluser(){SqlSession sqlsession=returnsqlsession.getSqlSession(true);userMapper2 mapper=sqlsession.getMapper(userMapper2.class);Listlist=mapper.getAll();sqlsession.close();System.out.println(list);}public static void main(String[] args) {//testadd();//testupdate();//testdelete();//getuser();getalluser();} }

使用的方法差不了太多,運用了反射的思想。實際的配置名稱還是以具體為主,mybatis操作數據比起sql語句真的方便很多。

總結

以上是生活随笔為你收集整理的mybatis学习笔记(2)两种配置实现增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。