Mybatis--環(huán)境搭建及CRUD

一.環(huán)境搭建

1.主要配置,數(shù)據(jù)庫(kù)連接信息及映射類

db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///test?characterEncoding=utf8
username=root
password=123
SqlMapConfig.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>
    <!--加載數(shù)據(jù)庫(kù)連接配置-->
    <properties resource="db.properties"/>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="jdbc"></transactionManager>
            <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="com/unclezs/dao/IUserDao.xml"></mapper>
    </mappers>
</configuration>

2.編寫映射類IUserDao.java

public interface IUserDao { //todo}

3.映射類的配置文件

<?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.unclezs.dao.IUserDao">
    <!-- todo -->
</mapper>

4.配置log4j

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug,CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

二琐凭、CRUD

1.映射文件

<?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.unclezs.dao.IUserDao">
    <select id="findAll" resultType="com.unclezs.domain.User">
        select * from user
    </select>
    <select id="findUserById" resultType="com.unclezs.domain.User" parameterType="int">
        select * from user where id=#{id}
    </select>
    <insert id="addUser" parameterType="com.unclezs.domain.User">
    <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
        select last_insert_id();
    </selectKey>
        insert into USER(username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})
    </insert>
    <update id="updateUser" parameterType="com.unclezs.domain.User">
        update user set username=#{username} where id=#{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
</mapper>

2.映射類

package com.unclezs.dao;

import com.unclezs.domain.User;

import java.util.List;

/**
 * @Author Unclezs.com
 * @Date 20:05 2019.03.24
 **/
public interface IUserDao {
    /**
     * 查找所有用戶
     * @return
     */
    public List<User> findAll();
    /**
     * 根據(jù)查找一個(gè)用戶
     * @return
     */
    public User findUserById(int id);

    /**
     * 添加用戶
     * @param user
     */
    public void addUser(User user);

    /**
     * 更新用戶
     * @param user
     */
    public void updateUser(User user);

    /**
     * 刪除用戶
     * @param
     */
    public void deleteUser(int id);

}

3.實(shí)體類

package com.unclezs.domain;

import java.sql.Date;

/**
 * @Author Unclezs.com
 * @Date 20:05 2019.03.24
 **/
public class User {
    private int id;
    private String username;
    private Date birthday;
    private String address;
    private String sex;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

4.測(cè)試類

public class AppTest {
    private InputStream in;
    private SqlSessionFactory sessionFactory;
    private SqlSession session;
    private IUserDao userDao;
    @Before
    public void init() throws Exception {
        //1.加載配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.創(chuàng)建session工廠
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        sessionFactory = builder.build(in);
        //3.獲取會(huì)話
        session = sessionFactory.openSession(true);
        userDao = session.getMapper(IUserDao.class);
    }

    @Test
    public void testFindAll() {
        System.out.println(userDao.findAll());

    }
    @Test
    public void testAddUser(){
        User user=new User();
        user.setAddress("重慶");
        user.setUsername("uncle");
        user.setSex("男");
        user.setBirthday(new Date(System.currentTimeMillis()));
        System.out.println(user);
        userDao.addUser(user);
//        session.commit();
        System.out.println(user);
    }
    @Test
    public void TestUpdateUser(){
        User user = userDao.findUserById(54);
        user.setUsername("uncle");
        userDao.updateUser(user);
    }
    @Test
    public void testDeleteUser(){
        userDao.deleteUser(45);
    }
    @After
    public void destory() throws IOException {
        session.close();
        in.close();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谴忧,一起剝皮案震驚了整個(gè)濱河市碴萧,隨后出現(xiàn)的幾起案子柒昏,更是在濱河造成了極大的恐慌撞叽,老刑警劉巖姻成,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異愿棋,居然都是意外死亡科展,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門糠雨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來才睹,“玉大人,你說我怎么就攤上這事甘邀±湃粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵松邪,是天一觀的道長(zhǎng)坞琴。 經(jīng)常有香客問我,道長(zhǎng)逗抑,這世上最難降的妖魔是什么剧辐? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮邮府,結(jié)果婚禮上荧关,老公的妹妹穿的比我還像新娘。我一直安慰自己褂傀,他們只是感情好忍啤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仙辟,像睡著了一般同波。 火紅的嫁衣襯著肌膚如雪鳄梅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天未檩,我揣著相機(jī)與錄音卫枝,去河邊找鬼。 笑死讹挎,一個(gè)胖子當(dāng)著我的面吹牛校赤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筒溃,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼马篮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了怜奖?” 一聲冷哼從身側(cè)響起浑测,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎歪玲,沒想到半個(gè)月后迁央,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滥崩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年岖圈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钙皮。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜂科,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出短条,到底是詐尸還是另有隱情导匣,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布茸时,位于F島的核電站贡定,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏可都。R本人自食惡果不足惜缓待,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汹粤。 院中可真熱鬧命斧,春花似錦田晚、人聲如沸嘱兼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芹壕。三九已至汇四,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踢涌,已是汗流浹背通孽。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睁壁,地道東北人背苦。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像潘明,于是被迫代替她去往敵國(guó)和親行剂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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