SSH框架的結(jié)合幾乎家喻戶曉暖眼,但是一般的中小項目,使用Spring和MyBatis就夠了位岔,而且MyBatis輕便好使校赤,易上手,值得大家嘗試一次午绳。
開篇簡介:
Spring:
Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架置侍。
兩個重要模塊:Spring 面向方面編程(AOP)和控制反轉(zhuǎn) (IOC) 容器。
控制反轉(zhuǎn)模式(也稱作依賴性介入)的基本概念是:不創(chuàng)建對象拦焚,但是描述創(chuàng)建它們的方式蜡坊。在代碼中不直接與對象和服務(wù)連接,但在配置文件中描述哪一個組件需要哪一項服務(wù)赎败。
容器 (在 Spring 框架中是 IOC 容器) 負責(zé)將這些聯(lián)系在一起秕衙。在典型的 IOC 場景中,容器創(chuàng)建了所有對象僵刮,并設(shè)置必要的屬性將它們連接在一起据忘,決定什么時間調(diào)用方法。
? MyBatis:
MyBatis 是支持普通 SQL查詢搞糕,存儲過程和高級映射的優(yōu)秀持久層框架勇吊。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及
結(jié)果集的檢索。
MyBatis 使用簡單的 XML或注解用于配置和原始映射寞宫,將接口和 Java 的POJOs(Plain Old Java Objects萧福,普通的 Java
對象)映射成數(shù)據(jù)庫中的記錄。
? 開始整合Spring和MyBatis:
jar列表截圖:
2辈赋、創(chuàng)建一個簡單的數(shù)據(jù)庫(springmybaitis)和數(shù)據(jù)表(user---id,username,password)鲫忍。
3、以用戶管理為例钥屈,創(chuàng)建model和dao.
文件列表截圖如下:
model----User.java
1 package com.springMyBatis.system.model;
2
3 public class User {
4? ? private int id;
5? ? private String username;
6? ? private String password;
7? ? public User(){}
8? ? public int getId() {
9? ? ? ? return id;
10? ? }
11? ? public void setId(int id) {
12? ? ? ? this.id = id;
13? ? }
14? ? public String getUsername() {
15? ? ? ? return username;
16? ? }
17? ? public void setUsername(String username) {
18? ? ? ? this.username = username;
19? ? }
20? ? public String getPassword() {
21? ? ? ? return password;
22? ? }
23? ? public void setPassword(String password) {
24? ? ? ? this.password = password;
25? ? }
26? ? public String toString(){
27? ? ? ? return "User[id="+id+" , username="+username+" , password="+password+"]";
28? ? }
29? ?
30
31 }
dao------接口UserDao.java
1 package com.springMyBatis.system.dao;
2
3 import com.springMyBatis.system.model.User;
4
5 public interface UserDao {
6? ? public User getUser(User user);
7? ? public void addUser(User user);
8? ? public void updateUser(User user);
9? ? public void deleteUser(int UserId);
10 }
dao-----UserDao.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"?
3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">?
4 <mapper namespace="com.springMyBatis.system.dao.UserDao">?
5 <select id="getUser" parameterType="com.springMyBatis.system.model.User" resultType="com.springMyBatis.system.model.User">?
6? ? SELECT * FROM user WHERE username=#{username} AND password=#{password}?
7 </select>?
8 <insert id="addUser" parameterType="com.springMyBatis.system.model.User" flushCache="true">?
????????Java架構(gòu)交流學(xué)習(xí)圈:681065582 面向具有Java開發(fā)經(jīng)驗人群 幫助突破瓶頸 提升思維能力
9? ? INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})?
10 </insert>?
11 <update id="updateUser" parameterType="com.springMyBatis.system.model.User">?
12? ? UPDATE user SET password=#{password} WHERE id=#{id}?
13 </update>?
14 <delete id="deleteUser" parameterType="int">?
15? ? DELETE FROM user WHERE id=#{id}?
16 </delete>?
17 </mapper>
4悟民、Spring配置文件----ApplicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans?
3? ? xmlns="http://www.springframework.org/schema/beans"?
4? ? xmlns:tx="http://www.springframework.org/schema/tx"?
5? ? xmlns:p="http://www.springframework.org/schema/p"?
6? ? xmlns:aop="http://www.springframework.org/schema/aop"?
7? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
8? ? xsi:schemaLocation="http://www.springframework.org/schema/beans?
9? ? http://www.springframework.org/schema/beans/spring-beans-3.0.xsd?
10? ? http://www.springframework.org/schema/tx?
11? ? http://www.springframework.org/schema/tx/spring-tx-3.0.xsd?
12? ? http://www.springframework.org/schema/aop? ?
13? ? http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">?
14 <!-- 配置數(shù)據(jù)源-->?
15? ? <bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">?
16? ? <property name="driverClassName">?
17? ? ? ? <value>org.gjt.mm.mysql.Driver</value>?
18? ? </property>?
19? ? <property name="url">?
20? ? ? ? <value>jdbc:mysql://localhost:3306/springmybaitis?useUnicode=true&characterEncoding=UTF-8</value>?
21? ? ? ? <!--springmybaitis是我的數(shù)據(jù)庫? -->
22? ? </property>?
23? ? <property name="username">?
24? ? ? ? <value>root</value>?
25? ? </property>?
26? ? <property name="password">?
27? ? ? ? <value>123456</value>?
28? ? </property>?
29 </bean>?
30 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">?
31? ? <property name="dataSource" ref="jdbcDataSource" />?
32? ? <property name="configLocation" value="classpath:mybatis-config.xml"></property>?
33 </bean>?
34 <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">?
????????Java架構(gòu)交流學(xué)習(xí)圈:681065582 面向具有Java開發(fā)經(jīng)驗人群 幫助突破瓶頸 提升思維能力
35? ? <property name="mapperInterface" value="com.springMyBatis.system.dao.UserDao"></property>?
36? ? <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>?
37 </bean>?
38 </beans>
5、MyBatis的配置文件------mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE configuration PUBLIC?
3? ? "-//mybatis.org//DTD Config 3.0//EN"?
4? ? "http://mybatis.org/dtd/mybatis-3-config.dtd">?
5 <configuration>?
6? ? <mappers>?
7? ? ? ? <mapper resource="com/springMyBatis/system/dao/UserDao.xml"/>?
8? ? </mappers>?
9 </configuration>
6篷就、測試
首先測試添加一條數(shù)據(jù):
1 package com.springMyBatis.system.test;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.ClassPathXmlApplicationContext;
5
6 import com.springMyBatis.system.dao.UserDao;
7 import com.springMyBatis.system.model.User;
8
9 public class UserController {
10? ?
11? ? /**
12? ? ? * @param args
13? ? ? */
14? ? public static void main(String[] args) {
15? ? ? ? ApplicationContext ctx=null;
16? ? ? ? ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
17? ? ? ? UserDao userDao=(UserDao) ctx.getBean("userDao");
18? ? ? ? User user=new User();
19? ? ? ? //添加兩條數(shù)據(jù)
20? ? ? ? user.setId(1);
21? ? ? ? user.setUsername("Jessica");
22? ? ? ? user.setPassword("123");
23? ? ? ? userDao.addUser(user);
24? ? ? ? user.setId(2);
25? ? ? ? user.setUsername("Jessica2");
26? ? ? ? user.setPassword("123");
27? ? ? ? userDao.addUser(user);
28? ? ? ? System.out.println("添加成功");
29? ? ? ? //查詢數(shù)據(jù)
30? ? ? ? user.setUsername("Jessica");
31? ? ? ? user.setPassword("123");
32? ? ? ? System.out.println(userDao.getUser(user).toString());
33? ? ? ? user.setUsername("Jessica2");
34? ? ? ? user.setPassword("123");
35? ? ? ? System.out.println(userDao.getUser(user).toString());
36? ? ? ? //修改數(shù)據(jù)
37? ? ? ? user.setId(2);
38? ? ? ? user.setPassword("802");
39? ? ? ? userDao.updateUser(user);
40? ? ? ? System.out.println("修改成功");
41? ? ? ? //刪除數(shù)據(jù)
42? ? ? ? userDao.deleteUser(1);
43? ? ? ? System.out.println("刪除成功");
44? ? ? ?
45? ? }
46
47 }
最后數(shù)據(jù)庫只剩一條數(shù)據(jù):
結(jié)合Spring和MyBatis很簡單射亏,對于一些小一些的項目,想要做到精致易掌控,這兩個框架的結(jié)合足以智润。雖然現(xiàn)在Hibernate也很紅及舍,但是感覺它內(nèi)部很神秘,很難配置窟绷,也不好優(yōu)化锯玛,就是有種不敢下手的感覺。雖說Hibernate配置有點難兼蜈,但是搭好了環(huán)境后攘残,開發(fā)效率還是很高的,只需要配置一下表關(guān)系什么的就Ok了为狸。但是比如說查個數(shù)據(jù)什么的歼郭,很難掌控的到細節(jié)。Mybatis就可以控制sql的細節(jié)辐棒,雖然寫sql語句比較耗費時間病曾,也需要你的sql基礎(chǔ),但是也正因為這樣涉瘾,使用MyBatis的人的sql水平才會提高啊知态,看到我們項目經(jīng)理二三分鐘弄出一個看似復(fù)雜卻又很效率的sql語句捷兰,感覺很帥立叛,很牛的樣子。這么分析起來贡茅,兩者皆不可拋秘蛇,結(jié)合學(xué)習(xí)一下。本文只是簡單的實例顶考,在*dao.xml的配置文件里赁还,還有其他幫助優(yōu)化和簡化sql,幫助提高效率的一些知識驹沿,有待我們進一步學(xué)習(xí)呢艘策。還有,也可以通過結(jié)合Spring自動掃描裝配dao等渊季,也可以為配置文件減輕負擔(dān)不少朋蔫,期待下一次更成熟的使用。