1. 程式人生 > >搭建MyBatis工作環境以及增刪改查基本操作

搭建MyBatis工作環境以及增刪改查基本操作

read generated artifact this close sco del url eal

數據庫準備

創建一個數據庫為mybatus-test,表為user

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
insert  into `user`(`id`,`name`,`age`) values 
(1,‘李三‘,18),(2,‘張三‘,25);

搭建環境

使用idea開發,所有考慮使用maven來管理項目,下面是pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.Bobi</groupId>
    <artifactId>Bobi</artifactId>
    <version>1.0-SNAPSHOT</version>
<dependencies>
    <!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- mysql驅動包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.29</version>
    </dependency>
    <!-- junit測試包 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!-- 日誌文件管理包 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>
</dependencies>
</project>

接著再加個日誌輸出環境配置文件,log4j.properties文件如下
各個元素得具體作用是什麽,可以自行了解一下,這裏就不多言啦

# Global logging configuration
log4j.rootLogger=DEBUG, stdout  
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n 

為了體現所謂得不硬編碼,所有加個數據庫配置文件吧,sql.properties
根據自己得用戶名和密碼改一改

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test
jdbc.username=root
jdbc.password=123456

前面寫了那麽多配置文件,下面終於寫mybatis的配置文件啦,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="mysql.properties"/>
    <settings>
        <!--全局性設置懶加載。如果設為‘false’,則所有相關聯的都會被初始化加載,默認值為false-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--當設置為‘true’的時候,懶加載的對象可能被任何懶屬性全部加載。否則,每個屬性都按需加載。默認值為true-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>
    <typeAliases>
        <!-- 其實就是將bean的替換成一個短的名字-->
        <typeAlias type="com.bobi.po.User" alias="User"/>
    </typeAliases>
    <!--對事務的管理和連接池的配置-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED"><!--POOLED:使用Mybatis自帶的數據庫連接池來管理數據庫連接-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--mapping文件路徑配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

</configuration>

以上的配置文件視人而異吧!大概就是這樣子啦!!!!

編寫sql映射配置文件

數據庫中就一張表,現在就拿這張表來普通查詢,模糊查詢,增加,修改,刪除操作
實體類User.java

package com.bobi.po;

public class User {

    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

映射文件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="com.bobi.po.User">
    <!--下列的id必須唯一的-->
    <insert id="insertUser" parameterType="com.bobi.po.User" useGeneratedKeys="true">
        INSERT INTO USER(name,age) VALUES(#{name},#{age})
    </insert>

    <update id="updateUsername" parameterType="com.bobi.po.User">
        UPDATE USER SET name=#{name} WHERE id=#{id}
    </update>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM USER WHERE id=#{id}
    </delete>

    <select id="findById" parameterType="int" resultType="com.bobi.po.User">
        SELECT * FROM User WHERE id=#{id}
    </select>

    <select id="findUserByUsername" parameterType="java.lang.String" resultType="com.bobi.po.User">
        SELECT * FROM USER WHERE name LIKE ‘%${value}%‘
    </select>

</mapper>

在這裏值得註意一下的是平時可能會遇到如下的錯誤
技術分享圖片

如果有遇到如圖中的問題,根據圖中的提示修改就可以啦
最後一個就是編寫w測試類了,在src\main\java中編寫一個UserTest.java

package com.bobi.test;
import com.bobi.po.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 java.io.IOException;
import java.io.Reader;
import java.util.List;
public class UserTest {

    public static void main(String[] args) {
        String resoure="mybatis-config.xml";
        Reader reader=null;
        try {
            reader= Resources.getResourceAsReader(resoure);
            //創建會話工廠。傳入MyBatis配置文件信息
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
            //通過會話工廠創建會話session
            SqlSession session=sqlSessionFactory.openSession();

            //通過id查詢用戶
            User user=session.selectOne("findById",2);
            System.out.println(user.getName());
            System.out.println(user.getAge());
            //通過模糊查詢查含有“三”字的用戶,並存於一個list列表中
            List<User> list=session.selectList("findUserByUsername","三");
            for (int i=0;i<list.size();i++){
                User user1=list.get(i);
                System.out.println(user1.getName());
                System.out.println(user1.getAge());
            }
            //新增一個用戶
            User user2=new User();
            user2.setName("王五");
            user2.setAge(28);
            session.insert("insertUser",user2);
            //刪除一個用戶
            session.delete("deleteUser",6);
            //更改一個用戶,將id為5的用名字改為孫儷
            User user3=new User();
            user3.setId(5);
            user3.setName("孫儷");
            session.update("updateUsername",user3);
            session.commit();
            session.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

OK,基本完成啦!下面是項目的GitHub的鏈接: [MybatisFirstDemo][1]
[1]: https://github.com/MyBobi/MyBatisFirstDemo

搭建MyBatis工作環境以及增刪改查基本操作