如果你的才华不足以支撑你的野心时,请安静下来学习吧!

Mybatis的CRUD操作

好久没写博客了。都快忘了博客怎么写,代码怎么敲了。好了,言归正传。

最近在学习了解Mybatis框架的运用,可以不用写接口的实现类。就可以完成增删改查。觉得挺牛逼的。特来学习。嘻嘻

我用的是mybatis3.2.7和mysql

ps:mybatis3.x之前的版本是ibatis

第一步:创建一个web项目,将mybatis和mysql的jar包导入lib中

 

第二步:新建一个jdbc.properties文件用来存放数据库连接相关属性

第三步:创建一个Configuration.xml配置文件,先用来配置jdbc,后期用mapper来配置实体类的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>
<!--加入数据库配置-->
    <properties resource="JDBC.properties" />
    <typeAliases>
<!--用来配置实体类的别名-->
        <typeAlias type="com.bestlink.bean.User" alias="User"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>
         <mapper resource="com/bestlink/bean/User.xml" /> 
        
    </mappers>
</configuration>

第四步:写User.java的实体类

package com.bestlink.bean;

public class User {
    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) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

}

第五步:写User.xml文件,用来操作User的增删改查。其中namespace是用来对应User的接口UserDao的。必须一致

<?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 必须和定义的接口UserDao一致-->
<mapper namespace="com.bestlink.dao.UserDao">
    <!-- 查询所有的数据  返回值是User类型 id是和接口中的方法一致  -->
    <select id="getUser" resultType="User">
        select * from users
    </select>
    <!-- 根据Id来查询  传入值是int类型   返回值是User类型 -->
    <select id="getUserById" parameterType="int" resultType="User">
        select * from users where id=#{id}
    </select>
    <!-- 增加 -->
    <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        insert into users(name,age) values(#{name},#{age})
    </insert>
    <!-- 删除 -->
    <delete id="deleteUser" parameterType="int">
        delete from users where id=#{id}
    </delete>
    <!-- 修改 -->
    <update id="updateUser" parameterType="User">
        update users set name=#{name} where id=#{id}
    </update>
</mapper>

第六步:定义接口UserDao

package com.bestlink.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.bestlink.bean.User;

public interface UserDao {
    // 查询所有数据

    public List<User> getUser();

    // 根据ID来查询

    public User getUserById(int id);

    // 增加

    public void insertUser(User user);

    // 删除

    public void deleteUser(int id);

    // 修改

    public void updateUser(User user);
}

第七步:编写SqlSessionFactory和SqlSession,返回SqlSession

package com.bestlink.util;

import java.io.IOException;
import java.io.Reader;

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

public class JDBC {
    static SqlSessionFactory sqlSessionFactory = null;
    static SqlSession sqlSession = null;

    public static SqlSession getSession() {

        try {
            Reader reader = Resources.getResourceAsReader("Configuration.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            sqlSession = sqlSessionFactory.openSession(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }

    public static void CloseSession() {
        sqlSession.close();
    }
}

第八步:编写测试类

package com.bestlink.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.bestlink.bean.User;
import com.bestlink.dao.UserDao;
import com.bestlink.util.JDBC;

public class test {
    static SqlSession session = JDBC.getSession();
    static UserDao dao = session.getMapper(UserDao.class);

    public static void main(String[] args) {
        System.out.println("查询所有数据:getuser()");
        getuser();
        System.out.println("根据Id查询数据:getUserById(1)");
        // 根据Id查询数据
        getUserById(1);
        System.out.println("插入一条数据:insertUser(User user),并查询所有数据");

        User user = new User();
        user.setName("测试1");
        user.setAge(34);
        insertUser(user);
        getuser();

        System.out.println("删除一条数据:deleteUser(int id),并查询所有数据");
        deleteUser(19);
        getuser();
        System.out.println("修改一条数据:updateUser(User user),并查询所有数据");
        user = new User();
        user.setName("修改数据");
        user.setId(1);
        updateUser(user);
        getuser();

    }

    /**
     * 查询所有数据
     */
    public static void getuser() {
        List<User> list = dao.getUser();
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
    }

    /**
     * 根据Id查询数据
     * 
     * @param id
     */
    public static void getUserById(int id) {
        User user = dao.getUserById(id);
        System.out.println(user);
    }

    /**
     * 插入一条数据
     * 
     * @param user
     */
    public static void insertUser(User user) {
        dao.insertUser(user);
    }

    /**
     * 删除一条数据
     * 
     * @param id
     */
    public static void deleteUser(int id) {
        dao.deleteUser(id);
    }

    /**
     * 修改一条数据
     * 
     * @param user
     */
    public static void updateUser(User user) {
        dao.updateUser(user);
    }
}

最后的最后千万要记得,在数据库中创建一个名为users的数据表,表中有id,name,age。其中id为主键。

 

posted @ 2016-08-09 23:48  码农的独白  阅读(394)  评论(0编辑  收藏  举报

如果你的才华不足以支撑你的野心时,请安静下来学习吧!