MyBatis的前身就是iBatis。是一個(gè)數(shù)據(jù)持久層(ORM)框架。 MyBatis是支持普通SQL查詢,存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持 久層框架。MyBatis消除了幾乎所有的JDBC 代碼和參數(shù)的手工 設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于 配置和原始映射,將接口和Java 的POJOs(Plan Old Java Objects,普通的Java 對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。每個(gè) MyBatis應(yīng)用程序主要都是使用SqlSessionFactory實(shí)例的,一個(gè) SqlSessionFactory實(shí)例可以通過(guò)SqlSessionFactoryBuilder獲得。
具體代碼如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
<?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> <typeAliases> <!-- give a alias for model --> <typeAlias alias= "goods" type= "com.clark.model.Goods" ></typeAlias> </typeAliases> <environments default = "development" > <environment id= "development" > <transactionManager type= "JDBC" /> <dataSource type= "POOLED" > <property name= "driver" value= "oracle.jdbc.driver.OracleDriver" /> <property name= "url" value= "jdbc:oracle:thin:@172.30.0.125:1521:oradb01" /> <property name= "username" value= "settlement" /> <property name= "password" value= "settlement" /> </dataSource> </environment> </environments> <mappers> <mapper resource= "com/clark/model/goodsMapper.xml" /> </mappers> </configuration> <?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= "clark" > <!-- 將db查詢出來(lái)的結(jié)果映射到Model--Goods --> <resultMap type= "com.clark.model.Goods" id= "t_good" > <id column= "id" property= "id" /> <result column= "cate_id" property= "cateId" /> <result column= "name" property= "name" /> <result column= "price" property= "price" /> <result column= "description" property= "description" /> <result column= "order_no" property= "orderNo" /> <result column= "update_time" property= "updateTime" /> </resultMap> <!-- 根據(jù)id查詢 返回Goods類型 <typeAlias alias= "goods" type= "com.clark.model.Goods" ></typeAlias>--> <!--resultMap 和 resultType的使用區(qū)別--> <select id= "selectGoodById" parameterType= "int" resultType= "goods" > select id,cate_id,name,price,description,order_no,update_time from goods where id = #{id} </select> <!-- 查詢所有Goods 返回resultMap類型--> <select id= "selectAllGoods" resultMap= "t_good" > select id,cate_id,name,price,description,order_no,update_time from goods </select> <!-- 指定parameterType=map 其中map的形式為Map<String,PageBean> map--> <select id= "selectGoodsByPage" resultMap= "t_good" parameterType= "map" > <!-- order by id asc是指對(duì)查詢后的結(jié)果進(jìn)行升序排序 --> <![CDATA[ select * from (select g.*,rownum rn from (select * from goods) g where 1 = 1 and rownum <= #{pageBean.endNumber}) where rn >= #{pageBean.startNumber} order by id asc ]]> </select> <!-- 新增Goods 參數(shù)類型為Goods--> <insert id= "insertGood" parameterType= "goods" > insert into goods(id,cate_id,name,price,description,order_no,update_time) values(#{id},#{cateId},#{name},#{price},#{description},#{orderNo},#{updateTime}) </insert> <!-- 更新Goods 參數(shù)類型為Goods--> <update id= "updateGood" parameterType= "goods" > update goods g set g.name = #{name},g.order_no =#{orderNo} where g.id = #{id} </update> <!-- 刪除Goods 參數(shù)類型為 int --> <delete id= "deleteGood" parameterType= "int" > delete from goods g where g.id = #{id} </delete> </mapper> package com.clark.model; import java.util.Date; public class Goods { private Integer id; private Integer cateId; private String name; private double price; private String description; private Integer orderNo; private Date updateTime; public Goods(){ } public Goods(Integer id, Integer cateId, String name, double price, String description, Integer orderNo, Date updateTime) { super (); this .id = id; this .cateId = cateId; this .name = name; this .price = price; this .description = description; this .orderNo = orderNo; this .updateTime = updateTime; } public Integer getId() { return id; } public void setId(Integer id) { this .id = id; } public Integer getCateId() { return cateId; } public void setCateId(Integer cateId) { this .cateId = cateId; } public String getName() { return name; } public void setName(String name) { this .name = name; } public double getPrice() { return price; } public void setPrice( double price) { this .price = price; } public String getDescription() { return description; } public void setDescription(String description) { this .description = description; } public Integer getOrderNo() { return orderNo; } public void setOrderNo(Integer orderNo) { this .orderNo = orderNo; } public Date getTimeStamp() { return updateTime; } public void setTimeStamp(Date updateTime) { this .updateTime = updateTime; } @Override public String toString() { return "[goods include:Id=" + this .getId()+ ",name=" + this .getName()+ ",orderNo=" + this .getOrderNo()+ ",cateId=" + this .getCateId()+ ",updateTime=" + this .getTimeStamp()+ "]" ; } } package com.clark.model; //模擬的一個(gè)分頁(yè)對(duì)象PageBean public class PageBean { //開(kāi)始數(shù) private Integer startNumber; //結(jié)束數(shù) private Integer endNumber; public PageBean(){ } public PageBean(Integer startNumber, Integer endNumber) { super (); this .startNumber = startNumber; this .endNumber = endNumber; } public Integer getStartNumber() { return startNumber; } public void setStartNumber(Integer startNumber) { this .startNumber = startNumber; } public Integer getEndNumber() { return endNumber; } public void setEndNumber(Integer endNumber) { this .endNumber = endNumber; } } package com.clark.mybatis; import java.io.IOException; import java.io.Reader; import java.util.HashMap; import java.util.List; import java.util.Map; 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.clark.model.Goods; import com.clark.model.PageBean; public class TestGoods { public static void main(String[] args) throws IOException { String resource = "configuration.xml" ; Reader reader = null ; SqlSessionFactory sessionFactory = null ; SqlSession session = null ; try { reader = Resources.getResourceAsReader(resource); sessionFactory = new SqlSessionFactoryBuilder().build(reader); session = sessionFactory.openSession(); PageBean pageBean = new PageBean( 8 , 20 ); Map<String,PageBean> map = new HashMap<String, PageBean>(); map.put( "pageBean" , pageBean); List<Goods> gs = findGoodsByPage(session,map); for (Goods goods2 : gs) { System.out.println(goods2.toString()); } } catch (IOException e) { e.printStackTrace(); } finally { session.close(); reader.close(); } } //find by id public static Goods findGoodById(SqlSession session,Integer id){ //clark對(duì)應(yīng)著goodMapper.xml配置文件中的namespace name="clark" Goods goods = (Goods)session.selectOne( "clark.selectGoodById" , id); return goods; } //find all public static List<Goods> findAllGoods(SqlSession session){ List<Goods> goods = session.selectList( "clark.selectAllGoods" ); return goods; } public static List<Goods> findGoodsByPage(SqlSession session,Map<String,PageBean> map){ List<Goods> goods = session.selectList( "clark.selectGoodsByPage" ,map); return goods; } //insert a goods public static int insertGoods(SqlSession session,Goods goods){ int result = session.insert( "clark.insertGood" , goods); session.commit(); return result; } //update goods public static int updateGoods(SqlSession session,Goods goods){ int result = session.update( "clark.updateGood" , goods); session.commit(); return result; } //delete goods public static int deleteGood(SqlSession session,Integer id){ int result = session.delete( "clark.deleteGood" , id); session.commit(); return result; } } |
關(guān)于Mybatis實(shí)現(xiàn)增刪改查及分頁(yè)查詢的方法的相關(guān)知識(shí),就給大家介紹到這里,后續(xù)還會(huì)持續(xù)給大家更新,謝謝大家一直以來(lái)對(duì)服務(wù)器之家網(wǎng)站的支持。