码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis中的xml方式增删改查

时间:2018-04-30 14:34:18      阅读:113      评论:0      收藏:0      [点我收藏+]

标签: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方式增删改查

标签:mybatis中的xml方式增删改查

原文地址:http://blog.51cto.com/357712148/2109214

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!