CRUD例子

CRUD例子(XML配置)

建库+建表语句

create database mybatisdemo;

use mybatisdemo;

CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);

INSERT INTO users(NAME, age) VALUES('Tom', 12);

INSERT INTO users(NAME, age) VALUES('Jack', 11);

添加Mybatis配置文件mybatisconfig

<?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/mybatisdemo" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>  
</configuration>

定义实体类

package org.demo.domain;

public class Users {
    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) {
        NAME = nAME;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

定义MAP映射文件usersMapper

<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
 -->
<mapper namespace="org.demo.mapper.usersMapper">
    <select id="getUsers" parameterType="int"    resultType="Users">
        select * from users where id=#{id}
    </select>
    <insert id="setUsers" parameterType="org.demo.domain.Users">
        insert into users(NAME,age) values(#{NAME},#{age})
    </insert>
    <update id="modifyUsers" parameterType="org.demo.domain.Users">
        update users set NAME=#{NAME},age=#{age} where id=#{id}
    </update>
    <delete id="delUsers" parameterType="org.demo.domain.Users">
        delete from users where id=#{id}
    </delete>
</mapper>

在config中添加MAP文件映射

<?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/mybatisdemo" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper   resource="org/demo/mapper/usersMapper.xml"/>
    </mappers>
</configuration>

JUNIT测试类

package mybatisDemo;

import static org.junit.Assert.*;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.demo.domain.Users;
import org.junit.Test;

public class Demo1Test {

    @Test
    public void test() {
        String resource="MybatisConfig.xml";
        InputStream  input=Demo1Test.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(input);
        SqlSession session=sessionFactory.openSession();
        //根据ID查询数据
        String statement="org.demo.mapper.usersMapper.getUsers";
        Users user=session.selectOne(statement, 1);
        System.out.println(user);
        //修改数据
        user.setNAME("JSON");
        statement="org.demo.mapper.usersMapper.modifyUsers";
        System.out.println("修改条数:"+session.update(statement, user));
        //新增数据
        Users user1=new Users();
        user1.setNAME("Bird");
        user1.setAge(27);
        statement="org.demo.mapper.usersMapper.setUsers";
        System.out.println("新增条数:"+session.insert(statement, user1));
        
        session.commit();
    session.close();
    }

 

CRUD(注解方式)

编写MAP接口

package org.demo.zjdemo;

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.demo.domain.Users;

public interface UsersMapper {
    @Insert("insert into users(NAME,age) values(#{NAME},#{age})")
    int setUsers(Users user);
    @Update("update users set NAME=#{NAME},age=#{age} where id=#{id}")
    int modifyUsers(Users user);
    @Select("select * from users")
    List<Users> findAll();
    @Select(" select * from users where id=#{id}")
    Users findByid(int id);
}

不需要UserMapper接口去编写具体的实现类代码,这个具体的实现类由MyBatis帮我们动态构建出来,我们只需要直接拿来使用即可。

在config文件中注册接口

<mapper   class="org.demo.zjdemo.UsersMapper"/>//直接指定接口

也可使用

<package name=” org.demo.zjdemo”/>

posted on 2017-03-18 20:23  十三公子  阅读(186)  评论(0编辑  收藏  举报

导航