mybatis 学习总结---基本使用

孤傲苍狼:mybatis学习总结系列

1. 新建Maven项目

  maven 依赖:

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

 2. 定义实体类

package com.skd.mybits.domain;

public class User
{
    int id;
    String name;
    Integer age;
    
    public User()
    {
        super();
    }

    
    public User(int id, String name, Integer age)
    {
        super();
        this.id = id;
        this.name = name;
        this.age = 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 Integer getAge()
    {
        return age;
    }
    public void setAge(Integer age)
    {
        this.age = age;
    }

    @Override
    public String toString()
    {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

    

}

 3. 配置文件

3.1 mybatis的配置文件

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    
    <!-- 注册 UserMapper.xml 文件-->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
    
</configuration>

 3.2 定义user实体类的映射文件

<?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,习惯上设置实体类的全限定类名,保证唯一性 -->
<mapper namespace="com.skd.mybits.domain.UserMapper">
    <!-- 在select标签中编写查询的SQL语句, 
        设置select标签的id属性为getUser,id属性值必须是唯一的,程序中可通过 namespace+id 定位到一个具体的SQL语句并进行调用
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 ,此时对象的属性和表中的字段必须一致,否则查询到的对象属性为null
        resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 -->
    <!-- 根据id查询得到一个user对象 -->
    <select id="getUser" parameterType="int" resultType="com.skd.mybits.domain.User">
        select * from users where id=#{id}
    </select>
    
    <select id="getAllUser" resultType="com.skd.mybits.domain.User">
        select * from users
    </select>
    
    <insert id="addUser" parameterType="com.skd.mybits.domain.User">
        insert into users (id,name,age) values(#{id}, #{name}, #{age})
    </insert>

    <update id="updateUser" parameterType="com.skd.mybits.domain.User">
        update users set name=#{name},age=#{age} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from users where id=#{id}
    </delete>
</mapper>

 4. 代码示例

package com.skd.mybits.domain;

import java.io.InputStream;
import java.util.List;

import javax.jws.soap.SOAPBinding.Use;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Operate
{
    public static void main( String[] args )
    {
        User user = new User(12, "12", 12);
        add(user);
        delete(user);
        get(1);
    }

    public static void add(User user)
    {
        // 通过实体类映射文件的 namespace + id 定位到一条具体的SQL语句进行调用
        String namespace = "com.skd.mybits.domain.UserMapper.addUser";
        getSession().insert(namespace, user);
        System.out.println("add"+user);
    }

    public static void get(int id)
    {
        String namespace = "com.skd.mybits.domain.UserMapper.getUser";
        Object user = getSession().selectOne(namespace, id);
        System.out.println("get"+user);
    }
    
    public static void getAll()
    {
        String namespace = "com.skd.mybits.domain.UserMapper.getAllUser";
        List<Object> selectList = getSession().selectList(namespace);
        for (Object user : selectList)
        {
            System.out.println("getAll"+user);
        }
    }

    public static void update(User user)
    {
        String namespace = "com.skd.mybits.domain.UserMapper.updateUser";
        getSession().update(namespace, user);
        System.out.println("update"+user);
    }

    public static void delete(User user)
    {
        String namespace = "com.skd.mybits.domain.UserMapper.deleteUser";
        getSession().delete(namespace, user.getId());
        System.out.println("delete"+user);
    }

    public static SqlSession getSession(){
        
        // mybatis的配置文件
        String resource = "conf.xml";
        
        // 加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Operate.class.getClassLoader().getResourceAsStream(resource);
         
        // 构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        
        //  true:通过 SqlSession 增删改查后自动提交  
        // false:通过 SqlSession 增删改查后需要手动提交  
        SqlSession session = sessionFactory.openSession(true);
        
        return session;

    }
}

 5. 数据库表

CREATE TABLE `users` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

猜你喜欢

转载自www.cnblogs.com/virgosnail/p/10028998.html