1. 程式人生 > >mybatis中的xml方式增刪改查

mybatis中的xml方式增刪改查

mybatis中的xml方式增刪改查

實體類
package cn.liwen.entity;

public class User {
    private long id; //主鍵
    private String username;//用戶名
    private String password;//密碼

    public long getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username=‘" + username + ‘\‘‘ +
                ", password=‘" + password + ‘\‘‘ +
                ‘}‘;
    }
}

接口實現類

package cn.liwen.impl;

import cn.liwen.entity.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.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoImpl {
    private SqlSession session = null;

    @BeforeClass
    public void init() throws IOException {
        // 1、啟動mybatis框架
        // SqlSession--->SqlSessionFatory----->SqlSessionFatoryBuilder
        SqlSessionFactoryBuilder ssb = new SqlSessionFactoryBuilder();
        // 將mybatis.xml文件轉化成流
        InputStream ins = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactory ssf = ssb.build(ins);
        session = ssf.openSession();
    }

    /**
     * 查詢所以名字
     * */
    @Test
    public void getAllUser()  {

        /** 2、調用局部配置文件中的sql語句*/
        List<User> userList = session.selectList("cn.liwen.impl.UserDaoImpl.getAllUser");
        for (User user : userList) {
            System.out.println(user);
        }
    }

    /**使用lists方式*/
    @Test
    public void getAllUserlist() throws IOException {
        List<User> userList = session.selectList("cn.liwen.impl.UserDaoImpl.getAllUserlist");
        for (User user : userList) {
            System.out.println(user);
        }
    }

    /**使用map方式*/
    @Test
    public void getAllUser2()  {

        // 2、調用局部配置文件中的sql語句
        List<Map<String, Object>> userList = session.selectList("cn.liwen.impl.UserDaoImpl.getAllUser2");
        for (Map<String, Object> map : userList) {
            System.out.println(map);
        }
    }

    /**測試單條記錄方式*/
    @Test
    public void getUserById() {
        //帶參數方式
        long id = 1L;
        Map<String, Object> userList = session.selectOne("cn.liwen.impl.UserDaoImpl.getUserById",id);
            System.out.println(userList);
    }

    /**多個參數*/
    @Test
    public void getUserByCondition() {
        Map<String,Object> paraMap =  new HashMap<String, Object>();
        paraMap.put("username","李玟");
        paraMap.put("pwd","321321");
        Map<String, Object> userList = session.selectOne("cn.liwen.impl.UserDaoImpl.getUserById",paraMap);
        System.out.println(userList);
    }

    /**通過實體類方式取值*/
    @Test
    public void getUserByCondition2() {
        // 同時傳遞多個參數
        User user = new User();
        user.setUsername("李玟");
        user.setPassword("321321");
        Map<String, Object> userMap = session.selectOne("cn.liwen.impl.UserDaoImpl.getUserByCondition2", user);
        System.out.println(userMap);
    }

     /**
    執行模糊查詢
     */
     @Test
     public void getUserByMh()
     {
         // 傳遞參數
         Map<String, Object> paramMap = new HashMap<String, Object>();
         paramMap.put("password", "3");
         List<Map<String, Object>> userMap = session.selectList("cn.liwen.impl.UserDaoImpl.getUserByMh", paramMap);
         for (Map<String, Object> map : userMap) {
             System.out.println(map);
         }
     }

     /**添加數據
    delete、insert、update標簽沒有resultType屬性
     */
    @Test
    public void addUser()
    {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("username","北京");
        paramMap.put("password","123455");
        int flag = session.insert("cn.liwen.impl.UserDaoImpl.addUser", paramMap);
        //增刪改必須提交事務
        session.commit();
        System.out.println(flag);
    }
}

接口實現類.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:命名空間,其值為某一個dao層類的具體路徑
 -->
<mapper namespace="cn.liwen.impl.UserDaoImpl">
    <!-- sql語句保存在Mybatis的局部配置文件中 -->
    <!--
        select標簽存放查詢語句(List<User>)
            id:在整個配置文件中id值必須唯一,其值與dao層類中的方法名保持一致
            resultType:指定當前sql查詢語句返回的數據類型。類型不是為sql語句的最終類型,而是某一條數據的類型
     -->
    <!-- findallusr  : 是別名 -->
    <select id="getAllUser" resultType="findallusr">
        SELECT * FROM users
    </select>

    <!--使用list方式調用 -->
    <select id="getAllUserlist" resultType="findallusr">
        SELECT * FROM users
    </select>

    <!-- 使用map 方法查詢-->
    <select id="getAllUser2" resultType="Map">
        SELECT * FROM users
    </select>

    <!--
        parameterType:指定接收參數類型
     -->
    <select id="getUserById" resultType="Map" parameterType="long">
        SELECT * FROM users where id=#{id}
    </select>

    <!--
        當傳遞的參數有多個條件時
      -->
    <select id="getUserByCondition" resultType="map" parameterType="Map">
        SELECT * FROM users WHERE username=#{username} AND PASSWORD=#{pwd}
    </select>

    <!--
            當傳遞的參數有多個條件時
            通過實體類方式
          -->
    <select id="getUserByCondition2" resultType="map" parameterType="cn.liwen.entity.User">
        SELECT * FROM users WHERE username=#{username} AND PASSWORD=#{password}
    </select>

    <!--
        執行模糊查詢
     -->
    <select id="getUserByMh" resultType="map" parameterType="map">
        SELECT * FROM users WHERE PASSWORD LIKE CONCAT(‘%‘,#{password},‘%‘)
    </select>

    <!-- 添加數據
        delete、insert、update標簽沒有resultType屬性
     -->
    <insert id="addUser" parameterType="Map">
        INSERT INTO users SET username=#{username},PASSWORD=#{password}
    </insert>

</mapper>

mybatis.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>

    <!-- 別名
    -->
    <typeAliases>
        <typeAlias type="cn.liwen.entity.User" alias="findallusr"/>
    </typeAliases>

    <!-- 配置數據庫連接環境:driver、url、username、password
    default===默認配置
    -->
    <environments default="mysql">
        <!-- 開始配置mysql -->
        <environment id="mysql">
            <!--配置事務  -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置數據源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://192.168.47.196:3306/test?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 關聯局部配置文件 -->
    <mappers>
        <mapper resource="cn/liwen/impl/UserDaoImpl.xml"/>
    </mappers>
</configuration>

mybatis中的xml方式增刪改查