蘇州培訓(xùn)網(wǎng) > 蘇州JAVA培訓(xùn)機(jī)構(gòu) > 蘇州其然軟件開發(fā)培訓(xùn)
首頁 培訓(xùn)網(wǎng) 最新資訊 熱門問答

蘇州其然軟件開發(fā)培訓(xùn)

13013833891 免費(fèi)試聽

您當(dāng)前的位置: 蘇州IT認(rèn)證培訓(xùn) > 蘇州JAVA培訓(xùn) > 昆山哪里學(xué)習(xí)java培訓(xùn)

昆山哪里學(xué)習(xí)java培訓(xùn)_JAVA培訓(xùn)

¥詳詢

班制:周末班

蘇州其然軟件開發(fā)
上課(咨詢)地址:蘇州市昆山市震川西路111號(hào)名仕大廈
報(bào)名咨詢 預(yù)約試聽
課程介紹
昆山哪里學(xué)習(xí)java培訓(xùn)
其然IT 教育師資

趙艷敏高級(jí)講師

從事設(shè)計(jì)行業(yè)多年,有著豐富的設(shè)計(jì)和動(dòng)畫制作經(jīng)驗(yàn)。曾參與中國電信天翼 手機(jī)網(wǎng)及天翼手機(jī)DIY等多個(gè)項(xiàng)目的設(shè)計(jì),動(dòng)畫,及As開發(fā)。項(xiàng)目經(jīng)驗(yàn)豐富。曾在卡酷動(dòng)畫衛(wèi)視下屬公司擔(dān)任高級(jí)動(dòng)畫師一職,參與多部動(dòng)畫片的制作 。對(duì)動(dòng)畫也有較高的造詣。

精通Flash、After Effects、Photoshop、Illustrator、ActionScript 2.0/3.0、Edius、CoolEdit、Axure RP、DIV CSS等相關(guān)技術(shù)。

講課有自己的風(fēng)格,思維活躍,條理清晰講課注重細(xì)節(jié),由簡(jiǎn)入繁。本著以 學(xué)生學(xué)會(huì)為目的,更注重理論與實(shí)踐相結(jié)合。

昆山哪里學(xué)習(xí)java培訓(xùn)

Java工程師就業(yè)前景

昆山哪里學(xué)習(xí)java培訓(xùn)

Java工程師就業(yè)前景

2015年,在美國、加拿大、澳大利亞、新加坡等發(fā)達(dá)國家和中等發(fā)達(dá)國家, JAVA軟件工程師年薪均在4—15萬美金,而在國內(nèi),JAVA軟件工程師也有極好的工作機(jī)會(huì)和很高的薪水。

在未來5年內(nèi),合格軟件人才的需求將遠(yuǎn)大于供給。JAVA軟件工程師是目前 國際高端計(jì)算機(jī)領(lǐng)域就業(yè)薪資非常高的一類軟件工程師。

一般情況下的JAVA軟件工程師是分四個(gè)等級(jí),從軟件技術(shù)員到助理軟件工程 師,再到軟件工程師,**后成為高級(jí)軟件工程師。

根據(jù)IDC的統(tǒng)計(jì)數(shù)字,在所有軟件開發(fā)類人才的需求中,對(duì)JAVA工程師的需 求達(dá)到全部需求量的60%—70%。同時(shí),JAVA軟件工程師的工資待遇相對(duì)較高。

通常來說,具有3—5年開發(fā)經(jīng)驗(yàn)的工程師,擁有年薪15萬元是很正常的一個(gè) 薪酬水平。80%的學(xué)生畢業(yè)后年薪都超過了8萬元。

根據(jù)專業(yè)數(shù)據(jù)分析,由于我國經(jīng)濟(jì)發(fā)展不均衡因素,JAVA軟件工程師工資待 遇在城市之間的差異也較大,一級(jí)城市(如北京、上海等),初級(jí)軟件工程師的待遇大概在4000-6000之間,中級(jí)軟件工程師的待遇在6000—8000之間, 而高級(jí)軟件工程師的待遇基本破萬。

Java課程介紹


昆山哪里學(xué)習(xí)java培訓(xùn)


Java企 業(yè)級(jí)應(yīng)用

“就業(yè)班”

一階段 Java語言核心

第二階段 數(shù)據(jù)庫及Web前端技術(shù)

第三階段 Java Web開發(fā)及服務(wù)端 框架

第四階段 綜合項(xiàng)目實(shí)踐


Java課程介紹 

昆山哪里學(xué)習(xí)java培訓(xùn)

Java企業(yè)級(jí)應(yīng)用

“就業(yè)班”

一階段 Java語言核心

二階段 數(shù)據(jù)庫及Web前端技術(shù)

三階段 Java Web開發(fā)及服務(wù)端框架

四階段 綜合項(xiàng)目實(shí)踐

Java互聯(lián)網(wǎng)開發(fā)

“培優(yōu)班”

一階段 Java語言核心

二階段 Java Web服務(wù)端技術(shù)

三階段 Java Web框架及互聯(lián)網(wǎng)架構(gòu)

四階段 Java互聯(lián)網(wǎng)架構(gòu)

職場(chǎng)華麗轉(zhuǎn)身

“才高班”

大數(shù)據(jù) 互聯(lián)網(wǎng)大牛班

6大實(shí)訓(xùn)項(xiàng)目

“愛逛網(wǎng)”電商后端數(shù)據(jù)平臺(tái)

培訓(xùn)經(jīng)驗(yàn)=就業(yè)經(jīng)驗(yàn)

>Java互聯(lián)網(wǎng)開發(fā)


“培優(yōu)班”

一階段 Java語言核心

第二階段 Java Web服務(wù)端技術(shù)

第三階段 Java Web框架及互聯(lián)網(wǎng)架構(gòu)

第四階段 Java互聯(lián)網(wǎng)架構(gòu)


職場(chǎng)華麗轉(zhuǎn)身

“才高班”

大數(shù)據(jù) 互聯(lián)網(wǎng)大牛班

6大實(shí)訓(xùn)項(xiàng)目

“愛逛網(wǎng)”電商后端數(shù)據(jù)平臺(tái)

培訓(xùn)經(jīng)驗(yàn)=就業(yè)經(jīng)驗(yàn)


淺談MyBatis 之 增刪改查(CRUD) (二)


>

mybatis

CRUD是指在做增加(Create)、讀取(Retrieve)(重新得到數(shù)據(jù))、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫。主要被用在描述軟件系統(tǒng)中數(shù)據(jù)庫或者持久層的基本操作功能。

這兒主要講解mybatis的增刪改查,對(duì)入門沒有了解的,可以去參考上一篇文章。如有不對(duì)之處,請(qǐng)諒解,并提出,本人也是才自學(xué)的新手。 淺談MyBatis 之 入門(一)


數(shù)據(jù)庫表

表內(nèi)容:


總配置文件

MyBatis-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 引入外部 配置 文件 --> <PRoperties resource="jdbc.properties" /> <!-- 配置 別名 --> <typeAliases> <typeAlias alias="Dept" type="com.wm.mybatis.POJO.Dept"/> </typeAliases> <environments default="development"> <environment id="development" > <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClass}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="passWord" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置的映射文件 --> <mappers> <mapper resource="mapper/deptCURD.xml" /> </mappers> </configuration>

POJO

Dept.java

package com.wm.mybatis.POJO; public class Dept { private Integer id ; private String name ; private String address ; public Dept(){} public Dept(Integer id, String name, String address) { super(); this.id = id; this.name = name; this.address = address; } public Integer getId() { System.out.println(id); return id; } public void setId(Integer id) { this.id = id; } public String getName() { System.out.println(name); return name; } public void setName(String name) { this.name = name; } public String getAddress() { System.out.println(address); return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Dept [id=" id ", name=" name ", address=" address "]"; } }

首先寫一個(gè)公共類

公共類sessionManagerUtil.java 是實(shí)現(xiàn) 獲取sqlsession 用的,這樣做的好處就是:便于管理當(dāng)前線程與session的一個(gè)關(guān)系,還有就是 便于操作session。

package com.wm.mybatis.util; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SessionManagerUtil { // 同一個(gè)線程 下 session 操作 private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); private static SqlSessionFactory sessionFactory = null; // 靜態(tài)加載塊 加載配置文件 static{ try { Reader config = Resources.getResourceAsReader("MyBatis-config.xml"); sessionFactory = new SqlSessionFactoryBuilder().build(config); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(); } } // 防止直接new private SessionManagerUtil(){} // 獲取session public static SqlSession getSession(){ SqlSession sqlSession = threadLocal.get(); if (sqlSession == null) { sqlSession = sessionFactory.openSession(); threadLocal.set(sqlSession); } return sqlSession; } /// 關(guān)閉session public static void closeSession(){ SqlSession sqlSession = threadLocal.get(); if (sqlSession != null) { sqlSession.close(); threadLocal.remove(); // 與當(dāng)前線程 分離 } } }

CRUD

增加

首先配置映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.wm.mybatis.dao.IDeptCURDMapperDao"> <!-- 由于數(shù)據(jù)庫表字段 和 JavaBean Dept類屬性 不一致 所以 要配置 resultMap 來實(shí)現(xiàn)一一對(duì)應(yīng)--> <resultMap type="Dept" id="resultDept"> <result property="id" column="d_id" /> <result property="name" column="d_name" /> <result property="address" column="d_address" /> </resultMap> <!-- 增加 部門 --> <insert id="addDept" parameterType="Dept" > insert into base_55demo.demo_mawei_dept(d_id,d_name,d_address) values(#{id},#{name},#{address}) </insert> </mapper>

DAO層:

DeptCURDMapperDaoImpl

import java.util.HashMap; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.wm.mybatis.POJO.Dept; import com.wm.mybatis.util.SessionManagerUtil; public class DeptCURDMapperDaoImpl{ // 添加部門 public void addDept(Dept dept) throws Exception { SqlSession session = null; try { session = SessionManagerUtil.getSession(); //獲取session int count = session.insert(IDeptCURDMapperDao.class.getName() ".addDept", dept); System.out.println("插入了記錄:" count " 條"); // 更新 要提交 session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); // 回滾 throw e; } finally{ SessionManagerUtil.closeSession(); //關(guān)閉session } } }

測(cè)試

TestDeptCURD

package com.wm.mybatis.Test; import java.util.List; import org.junit.Test; import com.wm.mybatis.POJO.Dept; import com.wm.mybatis.dao.DeptCURDMapperDaoImpl; public class TestDeptCURD { // 增加 @Test public void addDept() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); dao.addDept(new Dept(35, "衛(wèi)生部", "香港")); } }

結(jié)果


數(shù)據(jù)庫表:



刪除

映射配置

<!-- 刪除 --> <delete id="deleteDept" parameterType="Dept"> delete from base_55demo.demo_mawei_dept t where t.d_id = #{id} and t.d_name = #{name} </delete> <!-- 刪除部門 根據(jù) ID --> <delete id="deleteDeptById" parameterType="int"> delete from base_55demo.demo_mawei_dept t where t.d_id = #{id} </delete>

DAO層

// 刪除 public void deleteDept(Dept dept) throws Exception { SqlSession session = null; try { session = SessionManagerUtil.getSession(); int count = session.delete(IDeptCURDMapperDao.class.getName() ".deleteDept", dept); System.out.println("刪除了記錄:" count " 條"); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); throw e; } finally{ SessionManagerUtil.closeSession(); } } //刪除部門 根據(jù) ID來執(zhí)行 public void deleteDeptById(int id) throws Exception { SqlSession session = null; try { session = SessionManagerUtil.getSession(); int count = session.delete(IDeptCURDMapperDao.class.getName() ".deleteDeptById", id); System.out.println("刪除了記錄:" count " 條"); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); throw e; } finally{ SessionManagerUtil.closeSession(); } }

測(cè)試

// 刪除 @Test public void deleteDept() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); dao.deleteDept(new Dept(9, "9", "9")); } // 根據(jù)ID 刪除 @Test public void deleteDeptById() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); dao.deleteDeptById(8); dao.deleteDeptById(12); }

結(jié)果


數(shù)據(jù)庫表: 結(jié)果表明:ID為8、9、12的數(shù)據(jù)都被刪除。


修改

配置映射

<!-- 更新 --> <update id="updateDept" parameterType="Dept"> update base_55demo.demo_mawei_dept t set t.d_name = #{name} , t.d_address = #{address} where t.d_id = #{id} </update>

DAO層

// 修改更新 public void updateDept(Dept dept) throws Exception { SqlSession session = null; try { session = SessionManagerUtil.getSession(); int count = session.update(IDeptCURDMapperDao.class.getName() ".updateDept", dept); System.out.println("更新了記錄:" count " 條"); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); throw e; } finally{ SessionManagerUtil.closeSession(); } }

測(cè)試

// 更新 @Test public void updateDept() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); Dept dept = dao.getDeptById(6); dept.setName("計(jì)費(fèi)BOSS"); //修改數(shù)據(jù) dao.updateDept(dept); }

結(jié)果


數(shù)據(jù)庫表:


查詢

配置映射

<!-- 根據(jù)ID 來查詢部門 --> <select id="getDeptById" parameterType="int" resultMap="resultDept"> select * from base_55demo.demo_mawei_dept t where t.d_id = #{id} </select> <!-- 查詢所有的部門 --> <select id="getDeptALL" resultMap="resultDept"> select * from base_55demo.demo_mawei_dept t </select> <!-- 分頁查詢 --> <select id="getDeptByPage" resultMap="resultDept" parameterType="map"> <![CDATA[ select dept.d_id,dept.d_name, dept.d_address from (select rownum num, t.* from base_55demo.demo_mawei_dept t where rownum <= (#{start} #{num})) dept where dept.num > #{start} ]]> </select> <!-- 查詢 總記錄數(shù) --> <select id="getTotalNum" resultType="int"> select count(0) from base_55demo.demo_mawei_dept </select>

DAO層

//查詢 ** ID public Dept getDeptById(int id) { SqlSession session = SessionManagerUtil.getSession(); Dept dept = session.selectOne(IDeptCURDMapperDao.class.getName() ".getDeptById", id); SessionManagerUtil.closeSession(); System.out.println(dept); return dept; } //查詢 所以 部門 public List<Dept> getDeptALL() { SqlSession session = SessionManagerUtil.getSession(); List<Dept> depts = session.selectList(IDeptCURDMapperDao.class.getName() ".getDeptALL"); SessionManagerUtil.closeSession(); return depts; } // 分頁查詢 public List<Dept> getDeptByPage(int start, int num){ SqlSession session = SessionManagerUtil.getSession(); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("start", start); map.put("num", num); List<Dept> depts = session.selectList(IDeptCURDMapperDao.class.getName() ".getDeptByPage", map); return depts; } // 查詢所有記錄 public int getTotalNum(){ SqlSession session = SessionManagerUtil.getSession(); int num = session.selectOne(IDeptCURDMapperDao.class.getName() ".getTotalNum"); SessionManagerUtil.closeSession(); return num; }

測(cè)試

// 根據(jù) ID 查詢 @Test public void getDeptById() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); Dept dept = dao.getDeptById(19); System.out.println(dept); } // 查詢所有的 @Test public void getDeptALL() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); List<Dept> depts = dao.getDeptALL(); for (Dept dept : depts) { System.out.println(dept); } } // 分頁查詢 @Test public void getDeptByPage() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); int totalNum = dao.getTotalNum(); int pageNum = 4; int totalPage = (totalNum % pageNum == 0) ? (totalNum / pageNum) : (totalNum / pageNum) 1 ; for (int i = 0; i < totalPage; i ) { System.out.println("第 " (i 1) " 頁"); List<Dept> depts = dao.getDeptByPage(i*pageNum,pageNum); for (Dept dept : depts) { System.out.println(dept); } } } // 查詢總記錄 @Test public void getTotalNum() throws Exception{ DeptCURDMapperDaoImpl dao = new DeptCURDMapperDaoImpl(); int num = dao.getTotalNum(); System.out.println("總共:" num " 條記錄"); }

結(jié)果

此處 展示分頁查詢的結(jié)果,其他的查詢比較簡(jiǎn)單。



總結(jié)


1、如果映射文件配置namespace 為dao接口類路徑,則在實(shí)現(xiàn)操作時(shí),可以簡(jiǎn)化。 <mapper namespace="com.wm.mybatis.dao.IDeptCURDMapperDao">

此處就可以寫成 IDeptCURDMapperDao.class.getName()

session.insert(IDeptCURDMapperDao.class.getName() ".addDept", dept); 2、如果配置文件中返回的是多結(jié)果查詢,本應(yīng)該是List,但是這兒配置List里面放置的類型為返回值類型。resultMap=”resultDept” <!-- 分頁查詢 --> <select id="getDeptByPage" resultMap="resultDept" parameterType="map"> 3、如果配置映射參數(shù)是map時(shí),獲取值的名字要與map放入的名字一致。parameterType=”map” <!-- 分頁查詢 --> <select id="getDeptByPage" resultMap="resultDept" parameterType="map"> <![CDATA[ select dept.d_id,dept.d_name, dept.d_address from (select rownum num, t.* from base_55demo.demo_mawei_dept t where rownum <= (#{start} #{num})) dept where dept.num > #{start} ]]> </select> // 分頁查詢 public List<Dept> getDeptByPage(int start, int num){ SqlSession session = SessionManagerUtil.getSession(); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("start", start); map.put("num", num); List<Dept> depts = session.selectList(IDeptCURDMapperDao.class.getName() ".getDeptByPage", map); return depts; }

配置映射文件中和dao層的map放入值名稱要一致 map.put(“start”, start); map.put(“num”, num);


4、一個(gè)小技巧

在使用mybatis時(shí),配置Log4j配置,可以打印 顯示出(sessions連接ID、連接的開啟、關(guān)閉、及執(zhí)行的SQL、動(dòng)態(tài)SQL參數(shù)等信息)

在log4j.properties文件中加入:

log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

顯示的結(jié)果如下:


這樣便于學(xué)習(xí)mybatis,可以看見過程及背后的SQL。


相關(guān)推薦:


蘇州JAVA培訓(xùn)   蘇州JAVA培訓(xùn)班   蘇州JAVA培訓(xùn)機(jī)構(gòu)

體驗(yàn)課預(yù)約試聽

倒計(jì)時(shí)

12:00:00

課程熱線:

13013833891
在線咨詢

客服在線時(shí)間:早上9點(diǎn)~下午6點(diǎn),其他時(shí)間請(qǐng)?jiān)诰€預(yù)約報(bào)名或留言,謝謝!

蘇州JAVA

免費(fèi)體驗(yàn)課開班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專業(yè)老師給您回電,請(qǐng)保持電話暢通

咨詢電話:13013833891
推薦機(jī)構(gòu) 全國分站 更多課程

本周僅剩 個(gè)試聽名額

請(qǐng)鍵入信息,稍后系統(tǒng)將會(huì)把領(lǐng)獎(jiǎng)短信發(fā)至您的手機(jī)

申請(qǐng)?jiān)嚶犆~

QQ:1413838287
加盟合作:0755-83654572