java之mybatis之使用mybatis實現crud操作


目錄結構:

 

1.封裝 mybatis 的工具類:

MybatisUtil.java

public class MybatisUtil {
    private static SqlSessionFactory getSqlSessionFactory() throws IOException{
        Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
        return  new SqlSessionFactoryBuilder().build(reader);
    }
    public static SqlSession getSqlSession() throws IOException{
        //填寫參數 true表示事務自動提交
        return getSqlSessionFactory().openSession(true);
    }
}

2.vo類

User.java

 1 public class User implements Serializable{
 2     private int id;
 3     private String name;
 4     private int age;
 5     public int getId() {
 6         return id;
 7     }
 8     public void setId(int id) {
 9         this.id = id;
10     }
11     public String getName() {
12         return name;
13     }
14     public void setName(String name) {
15         this.name = name;
16     }
17     public int getAge() {
18         return age;
19     }
20     public void setAge(int age) {
21         this.age = age;
22     }
23     @Override
24     public String toString() {
25         return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
26     }
27 }
View Code

3.映射文件

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">
<!-- 
    namespace用來指定映射文件的命名空間,在這里通過namespace可以找到該空間下的所有的
    sql語句映射。namespace的命名通常和應該映射文件所在【包名+映射文件名】
 -->
<mapper namespace="cn.sxt.vo.UserMapper">
    <select id="findAll" resultType="User">
        select * from t_user
    </select>

    <!-- select用來編寫查詢的sql語句  id在同一個namespace下是唯一的。
        parameterType用來指定參數類型
        #{id} 占位符 輸入參數將會填充。建議和參數名要相同
        resultType 用來指定返回值類型
     -->
    <select id="selectUser" parameterType="int" resultType="User">
        select * from t_user where id = #{id}
    </select>
    <!-- insert用來映射插入語句 
        useGeneratedKeys 為true表示使用主鍵自增策略
        parameterType用來指定參數類型
        占位符中的 名稱是參數的屬性名,並且要提供get/set方法
    -->
    <insert id="insertUser" useGeneratedKeys="true" parameterType="User">
        insert into t_user(name,age) values(#{name},#{age})
    </insert>
    <!-- delete 用來指定刪除語句 -->
    <delete id="deleteUser" parameterType="int">
        delete from t_user where id=#{id}
    </delete>
    <!-- update 用來指定更新語句 -->
    <update id="updateUser" parameterType="User">
        update t_user set name=#{name},age=#{age} where id=#{id}
    </update>
</mapper>

 4.核心配置文件

mybatis.cfg.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>
    <!-- 它們都是外部化,可替代的屬性。可以配置在一個典型的Java 屬性文件中,或者通過
        properties 元素的子元素進行配置 -->
    <properties resource="jdbc.properties"></properties>
    <!-- 別名是一個較短的Java 類型的名稱。用來設置別名 -->
    <typeAliases>
        <!-- 為指定的包下所有類設置別名,別名默認為類名 -->
        <package name="cn.sxt.vo"/>
        <!-- 為指定的類型設置別名 
        <typeAlias type="cn.sxt.vo.User" alias="User"/>
        -->
    </typeAliases>
    <!-- MyBatis 能夠配置多套運行環境,這有助於將您的SQL 映射到多個數據庫上。例如,在您的
    開發、測試、生產環境中,您可能有不同的配置。
        default指向默認使用的環境
     -->
    <environments default="development">
        <environment id="development">
            <!-- 
                JDBC – 這個配置直接使用JDBC 的提交和回滾功能。它依賴於從數據源獲得連接來管理
                事務的生命周期。
                • MANAGED – 這個配置基本上什么都不做。它從不提交或者回滾一個連接的事務。而是讓
                容器(例如:Spring 或者J2EE 應用服務器)來管理事務的生命周期。
             -->
            <transactionManager type="JDBC" />
            <!-- 
                UNPOOLED – 這個類型的數據源實現只是在每次需要的時候簡單地打開和關閉連接。
                POOLED – 這個數據源的實現緩存了JDBC 連接對象,用於避免每次創建新的數據庫連接時都初始
                化和進行認證,加快程序響應。並發WEB 應用通常通過這種做法來獲得快速響應。
                JNDI – 這個數據源的配置是為了准備與像Spring 或應用服務器能夠在外部或者內部配置數據
                源的容器一起使用,然后在JNDI 上下文中引用它。
             -->
            <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>
        <!-- sql語句的映射文件配置 -->
        <mapper resource="cn/sxt/vo/UserMapper.xml"/>
    </mappers>
</configuration>

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1111

5.測試

MybatisTest.java

public class MybatisTest {
    @Test
    public void testAdd() throws IOException{
        User user = new User();
        user.setName("劉德華");
        user.setAge(55);
        SqlSession session = MybatisUtil.getSqlSession();
        //增 刪  改  返回值為受影響的行數
        session.insert("cn.sxt.vo.UserMapper.insertUser", user);
        session.close();
    }
    @Test
    public void testUpdate() throws IOException{
        SqlSession session = MybatisUtil.getSqlSession();
        User user=session.selectOne("cn.sxt.vo.UserMapper.selectUser", 1);
        user.setName("彰五金");
        session.update("cn.sxt.vo.UserMapper.updateUser",user);
        session.close();
    }
    @Test
    public void testDelete() throws IOException{
        SqlSession session = MybatisUtil.getSqlSession();
        session.delete("cn.sxt.vo.UserMapper.deleteUser", 3);
        session.close();
    }
    @Test
    public void testFindAll() throws IOException{
        SqlSession session = MybatisUtil.getSqlSession();
        List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
        for(User u:list){
            System.out.println(u);
        }
        session.close();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM