mybatis框架的運(yùn)用

首先在pom.xml中添加依賴

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.4</version>

</dependency>

在resources中新建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>

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdemo?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true"/>

<property name="username" value="root"/>

<property name="password" value="root"/>

</properties>


? ? <environments default="test">


? ? ? ? <environment id="test">


? ? ? ? ? ? <transactionManager type="JDBC" />


? ? ? ? ? ? <dataSource type="POOLED">

<property name="driver" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdemo" />

<property name="username" value="root" />

<property name="password" value="root" />

</dataSource>

</environment>

<environment id="development">


? ? ? ? <transactionManager type="JDBC" />


? ? ? ? <dataSource type="POOLED">

<property name="driver" value="${driver}" />

? ? ? ? <property name="url" value="${url}" />

<property name="username" value="${username}" />

<property name="password" value="${password}" />

</dataSource>

</environment>

</environments>

<mappers>

? ? ? ? <mapper resource="mappers/UserMapper.xml"/>

</mappers>

</configuration>

在resource下新建文件夾mappers诫惭,在新建文件UserMapper.xml

<?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="dao.UserMapper">


1.#{},預(yù)編譯的方式preparedstatement荚醒,使用占位符替換串慰,防止sql注入,一個(gè)參數(shù)的時(shí)候,任意參數(shù)名可以接收

2.${},普通的Statement毡琉,字符串直接拼接蕾久,不可以防止sql注入,一個(gè)參數(shù)的時(shí)候歌豺,必須使用${value}接收參數(shù)

-->

? ? <select id="queryUserByTableName" resultType="mabatismain.User">

select* from ${tableName}

</select>

<select id="login" resultType="mabatismain.User">

select* from tb_user where user_name = #{userName} and password = #{password}

</select>


id:唯一標(biāo)識(shí)推穷,隨便寫(xiě),在同一個(gè)命名空間下保持唯一类咧,使用動(dòng)態(tài)代理之后要求和方法名保持一致

resultType:sql語(yǔ)句查詢結(jié)果集的封裝類(lèi)型馒铃,使用動(dòng)態(tài)代理之后和方法的返回類(lèi)型一致;resultMap:二選一

parameterType:參數(shù)的類(lèi)型痕惋,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致

-->

? ? <select id="queryUserById" resultType="mabatismain.User">

select* from tb_user where id = #{id}

</select>

<select id="queryUserAll" resultType="mabatismain.User">

select* from tb_user

</select>


id:唯一標(biāo)識(shí)区宇,隨便寫(xiě),在同一個(gè)命名空間下保持唯一值戳,使用動(dòng)態(tài)代理之后要求和方法名保持一致

parameterType:參數(shù)的類(lèi)型议谷,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致

useGeneratedKeys:開(kāi)啟主鍵回寫(xiě)

keyColumn:指定數(shù)據(jù)庫(kù)的主鍵

keyProperty:主鍵對(duì)應(yīng)的pojo屬性名

-->

? ? <insert id="insertUser" useGeneratedKeys="true" keyColumn="id" keyProperty="id"

? ? ? ? ? ? parameterType="mabatismain.User">

INSERT INTO tb_user (

id,

user_name,

password,

name,

age,

sex,

birthday,

created,

updated

)

VALUES

(

null,

#{userName},

#{password},

#{name},

#{age},

#{sex},

#{birthday},

NOW(),

NOW()

);

</insert>


更新的statement

id:唯一標(biāo)識(shí),隨便寫(xiě)堕虹,在同一個(gè)命名空間下保持唯一卧晓,使用動(dòng)態(tài)代理之后要求和方法名保持一致

parameterType:參數(shù)的類(lèi)型,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致

-->

? ? <update id="updateUser" parameterType="mabatismain.User">

UPDATE tb_user

<trim prefix="set" suffixOverrides=",">

<if test="userName!=null">user_name = #{userName},</if>

<if test="password!=null">password = #{password},</if>

<if test="name!=null">name = #{name},</if>

<if test="age!=null">age = #{age},</if>

<if test="sex!=null">sex = #{sex},</if>

<if test="birthday!=null">birthday = #{birthday},</if>

updated = now(),

</trim>

WHERE

(id = #{id});

</update>


刪除的statement

id:唯一標(biāo)識(shí)赴捞,隨便寫(xiě)禀崖,在同一個(gè)命名空間下保持唯一,使用動(dòng)態(tài)代理之后要求和方法名保持一致

parameterType:參數(shù)的類(lèi)型螟炫,使用動(dòng)態(tài)代理之后和方法的參數(shù)類(lèi)型一致

-->

? ? <delete id="deleteUserById" parameterType="java.lang.String">

delete from tb_user where id=#{id}

</delete>

</mapper>

新建 UserMapper.class文件

package dao;

import mabatismain.User;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {

/**

* 登錄(直接使用注解指定傳入?yún)?shù)名稱(chēng))

? ? * @param userName

? ? * @param password

? ? * @return

? ? */

? ? public User login(@Param("userName") String userName,@Param("password") String password);

/**

* 根據(jù)表名查詢用戶信息(直接使用注解指定傳入?yún)?shù)名稱(chēng))

? ? * @param tableName

? ? * @return

? ? */

? ? public List queryUserByTableName(@Param("tableName") String tableName);

/**

* 根據(jù)Id查詢用戶信息

? ? * @param id

? ? * @return

? ? */

? ? public User queryUserById(String id);

/**

* 查詢所有用戶信息

? ? * @return

? ? */

? ? public List queryUserAll();

/**

* 新增用戶信息

? ? * @param user

? ? */

? ? public void insertUser(User user);

/**

* 根據(jù)id更新用戶信息

? ? * @param user

? ? */

? ? public void updateUser(User user);

/**

* 根據(jù)id刪除用戶信息

? ? * @param id

? ? */

? ? public void deleteUserById(String id);

}

創(chuàng)建UserMapper接口測(cè)試類(lèi)

package test;

import dao.UserMapper;

import mabatismain.User;

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 org.junit.Before;

import org.junit.Test;

import java.io.InputStream;

import java.util.Date;

import java.util.List;

import static org.junit.Assert.*;

public class UserMapperTest {

public UserMapperuserMapper;

@Before

? ? public void setUp()throws Exception {

String res="mybatis-config.xml";

InputStream inputStream= Resources.getResourceAsStream(res);

SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

SqlSession sqlSession=sqlSessionFactory.openSession(true);

userMapper=sqlSession.getMapper(UserMapper.class);

}

@Test

? ? public void testQueryUserByTableName() {

List userList =this.userMapper.queryUserByTableName("tb_user");

for (User user : userList) {

System.out.println(user);

}

}

@Test

? ? public void testLogin() {

System.out.println(this.userMapper.login("hj","123456"));

}

@Test

? ? public void testQueryUserById() {

System.out.println(this.userMapper.queryUserById("1"));

}

@Test

? ? public void testQueryUserAll() {

List userList =this.userMapper.queryUserAll();

for (User user : userList) {

System.out.println(user);

}

}

@Test

? ? public void testInsertUser() {

User user =new User();

user.setAge(20);

user.setBirthday(new Date());

user.setName("大神");

user.setPassword("123456");

user.setSex(2);

user.setUserName("bigGod222");

this.userMapper.insertUser(user);

System.out.println(user.getId());

}

@Test

? ? public void testUpdateUser() {

User user =new User();

user.setBirthday(new Date());

user.setName("靜靜");

user.setPassword("123456");

user.setSex(0);

user.setUserName("Jinjin");

user.setId("1");

this.userMapper.updateUser(user);

}

@Test

? ? public void testDeleteUserById() {

this.userMapper.deleteUserById("1");

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末波附,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昼钻,更是在濱河造成了極大的恐慌掸屡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件然评,死亡現(xiàn)場(chǎng)離奇詭異仅财,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)碗淌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)盏求,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抖锥,“玉大人,你說(shuō)我怎么就攤上這事碎罚“醴希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵荆烈,是天一觀的道長(zhǎng)拯勉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)憔购,這世上最難降的妖魔是什么宫峦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮玫鸟,結(jié)果婚禮上导绷,老公的妹妹穿的比我還像新娘。我一直安慰自己屎飘,他們只是感情好妥曲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枚碗,像睡著了一般逾一。 火紅的嫁衣襯著肌膚如雪铸本。 梳的紋絲不亂的頭發(fā)上肮雨,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音箱玷,去河邊找鬼怨规。 笑死,一個(gè)胖子當(dāng)著我的面吹牛锡足,可吹牛的內(nèi)容都是我干的波丰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舶得,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掰烟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起沐批,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纫骑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后九孩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體先馆,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年躺彬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了煤墙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梅惯。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖仿野,靈堂內(nèi)的尸體忽然破棺而出铣减,到底是詐尸還是另有隱情,我是刑警寧澤设预,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布徙歼,位于F島的核電站,受9級(jí)特大地震影響鳖枕,放射性物質(zhì)發(fā)生泄漏魄梯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一宾符、第九天 我趴在偏房一處隱蔽的房頂上張望酿秸。 院中可真熱鬧,春花似錦魏烫、人聲如沸辣苏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稀蟋。三九已至,卻和暖如春呐赡,著一層夾襖步出監(jiān)牢的瞬間退客,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工链嘀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萌狂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓怀泊,卻偏偏與公主長(zhǎng)得像茫藏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霹琼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容