-
/*動態代理,接口沒有實現類.Mybatis為接口提供實現類,即用Proxy.newProxyInstance()創建代理實例,返回類型為Object,利用泛型強制轉換*/ IMessage imessage = sqlSession.getMapper(IMessage.class); /*代理實例調用接口方法時,并不會執行,而是觸發 MapperProxy.invoke(),其中包含sqlSession.selectList(namespace.id,parameter)*/ /*至于為什么會包含,因為接口方法與(加載Mybatis的)配置信息對應得上,即 接口名.方法=namespace.id*/ messageList = imessage.queryMessageList(message);查看全部
-
Mybatis中的接口試編程即mybatis找到一個接口作為該表操作的代言:1、namespace 2、與sql關聯的id3、傳入的參數4、返回值 作用:1、規范mybatis中訪問配置文/2、遇到spring時{1、總配置文件中的數據源配置托管給spring管理2、db層(getsqlsession)會消失3、組織對象代碼移交給service層(即傳入的參數)4、sql執行代碼由spring實現5、dao層就剩接口文件(小三上位)與配置文件}查看全部
-
自定義標簽 封裝前臺jsp分頁代碼查看全部
-
sql語句與代碼分離,優點:便于管理和維護;缺點:不便于調試,需要借助日志工具獲得信息查看全部
-
jdbc中如何批量新增插入語句 1、在循環末尾加上statement.addBatch(); 2、結束后再執行statement.executeBatch();查看全部
-
通過invoke方法執行sql語句 怎么知道要執行的sql語句是怎么樣的查看全部
-
代理?查看全部
-
1、數據庫連接,使用時就創建,不使用立即釋放,對數據庫進行頻繁連接開啟和關閉,造成數據庫資源浪費,影響 數據庫性能。 設想:使用數據庫連接池管理數據庫連接。 2、將sql語句硬編碼到java代碼中,如果sql 語句修改,需要重新編譯java代碼,不利于系統維護。 設想:將sql語句配置在xml配置文件中,即使sql變化,不需要對java代碼進行重新編譯。 3、向preparedStatement中設置參數,對占位符號位置和設置參數值,硬編碼在java代碼中,不利于系統維護。 設想:將sql語句及占位符號和參數全部配置在xml中。 4、從resutSet中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,,不利于系統維護。 設想:將查詢的結果集,自動映射成java對象。查看全部
-
Mybatis在案例中呈現出的特點: 1.SQL語句與代碼分離 優點:便于管理和維護 缺點:不便于調試,需要借助日志工具獲得信息 2.用標簽控制動態SQL的拼接 優點:用標簽代替編寫邏輯代碼 缺點:拼接復雜SQL語句時,沒有代碼靈活,比較復雜 3. 結果集與Java對象的自動映射 優點:保證名稱相同即可自動映射 缺點:對開發人員所寫的SQL依賴性很強 4. 編寫原生SQL 優點:接近JDBC,很靈活 劣勢:對SQL語句依賴程序很高;半自動;數據庫移植不方便查看全部
-
針對加載過的配置文件會重復加載,應該使用單例模式查看全部
-
解決配置文件加載時機問題,可以寫一個監聽器查看全部
-
相關代碼——(上): @CommandContent.xml <insert id="insertOne" parameterType="com.imooc.bean.CommandContent"> insert into COMMAND_CONTENT(CONTENT,COMMAND_ID) values(#{content},#{commandId}) </insert> <insert id="insertBatch" parameterType="java.util.List"> insert into commandcontent(content,commandId) values <foreach collection="list" item="item" separator=","> (#{item.content},#{item.commandId}) </foreach> </insert> @ICommandContent.java public interface ICommandContent { //單條新增 public void insertOne(CommandContent content); //批量新增 void insertBatch(List<CommandContent> contentList); }查看全部
-
相關代碼——(中): @CommandContentDao.java /** * 和command_content表相關的數據庫操作 */ public class CommandContentDao { //使用jdbc批量增加 public void insertBatchByJdbc(List<CommandContent> contetnList){ try { Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/micro_message?characterEncoding=utf-8", "root", "root"); String insertSql="insert into command_content(content,command_id) values(?,?)"; PreparedStatement ps = conn.prepareStatement(insertSql); for(CommandContent c:contetnList){ ps.setString(1,c.getContent()); ps.setInt(2, c.getCommandId()); // ps.executeUpdate();//方法一:不推薦 ps.addBatch();//方法二 } ps.executeBatch();//方法二 } catch (Exception e) { e.printStackTrace(); } } }查看全部
-
相關代碼——(下): @CommandContentDao.java /** * 和command_content表相關的數據庫操作 */ public class CommandContentDao { //使用mybatics批量新增 public void insertBatch(List<CommandContent> contentlList){ DBAccess dbAccess=new DBAccess(); try { SqlSession sqlSession=dbAccess.getSqlSession(); //通過sqlSession執行SQL語言 ICommandContent commandContent = sqlSession.getMapper(ICommandContent.class); commandContent.insertBatch(contentlList); sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } } }查看全部
-
攔截器實現3 過濾客戶 ----- id.matches(".+ByPage$") 獲取購票信息 ----- page 購票 ----- 原始sql-->pageSql 送票 ----- return invocation.proceed();查看全部
舉報
0/150
提交
取消