【知了堂学习笔记】myBatis实现增删查改

来源:互联网 发布:杨千嬅 唱功 知乎 编辑:程序博客网 时间:2024/06/06 19:54

请关注“知了堂学习社区”http://www.zhiliaotang.com/portal.php

1.mybatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。mybatis最为强大的特性应该就是动态sql,将在后面的学习笔记中介绍。

2.使用mybatis

2.1 下载mybatis
mybatis最初的名称为ibatis,从apache到googlecode再到github。所以我们现在下载都是在GitHub进行jar包、文档、源码的下载。
github网站为:https://github.com/mybatis/
选择mybatis-3
这里写图片描述
然后将页面拉到最下面选择download latest
这里写图片描述

3. 创建数据库

我的数据库user表结构如下:

DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `userId` int(11) DEFAULT NULL,  `userName` varchar(255) DEFAULT NULL,  `address` varchar(255) DEFAULT NULL,  `phone` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('2', 'zhiliaotang', 'B7-2F', '456456456');INSERT INTO `user` VALUES ('3', '1223', '123', '123');INSERT INTO `user` VALUES ('3', 'ljx', 'sccd', '123456');INSERT INTO `user` VALUES ('5', 'ljx', 'sccd', '123456');

4. 构建你的myBatis项目

4.1 导入mybatis.jar、mysql驱动包。

项目目录结构如下
这里写图片描述

4.2 创建user类

User.java

package org.myBatis.domain;public class User {    private int userId;    private String userName;    private String address;    private String phone;    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    /**    *重写toString方法    */    @Override    public String toString() {        // TODO Auto-generated method stub        return "User [id=" + userId + ", name=" + userName + ", address=" + address + ", phone = "+phone+"]";    }}

4.3 创建核心配置文件

mybatis依赖的配置文件有:conf.xml和mapper.xml,其中xml文件的头可以去mybatis官网(http://www.mybatis.org/mybatis-3/zh/index.html)查看入门案例。

conf.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>    <environments default="development">        <environment id="development">            <!-- 事务-->            <transactionManager type="JDBC"></transactionManager>            <!-- 数据源-->            <dataSource type="POOLED">                <!-- 连接驱动 -->                <property name="driver" value="com.mysql.jdbc.Driver"/>                <!-- url-->                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>                <!-- 数据库用户名-->                <property name="username" value="root"/>                <!-- 数据库密码-->                <property name="password" value="123456"/>            </dataSource>        </environment>    </environments>    <!-- 映射文件-->    <mappers>        <mapper resource="org/myBatis/mapping/UserMapper.xml"/>    </mappers></configuration>

UserMapper.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"><!-- user类的映射     namespace:用于定位sql语句 --><mapper namespace="org.myBatis.mapping.user">    <!-- 查询语句        id:用于定位sql语句        parameterType:传入参数类型        resultType:返回参数类型     -->    <select id="findById" parameterType="int" resultType="org.myBatis.domain.User">        select * from user where userId = #{userId}    </select>    <!-- 新增语句 -->    <insert id="insert" parameterType="org.myBatis.domain.User">        insert into user values(#{userId},#{userName},#{address},#{phone})    </insert>    <!-- 删除语句 -->    <delete id="delete" parameterType="int">        delete from user where userId = #{userId}    </delete>    <!-- 修改语句 -->    <update id="update" parameterType="org.myBatis.domain.User" >        update user set userName = #{userName} , address = #{address} , phone = #{phone} where userId = #{userId}    </update></mapper>

4.4 测试

Test.java

package org.myBatis.test;import java.io.InputStream;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.myBatis.domain.User;public class Test {    public static void main(String[] args) {        // TODO Auto-generated method stub        // 1.读取配置文件Conf.xml        InputStream in = Test.class.getClassLoader().getResourceAsStream("org/myBatis/mapping/Conf.xml");        // 2.创建连接工厂        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);        // 3.获取连接        SqlSession session = ssf.openSession();        /*         * 新增        insert(session);        删除        delete(session);        查询        query(session);        修改        update(session);*/    }    public static void insert(SqlSession session){        // 4.定位sql语句        String statement = "org.myBatis.mapping.user.insert";        User user = new User();        user.setUserId(5);        user.setUserName("ljx");        user.setAddress("sccd");        user.setPhone("123456");        // 5.执行sql语句        int result = session.insert(statement,user);        // 6.提交事务        session.commit();        // 7.获取结果        System.out.println(result);    }    public static void delete(SqlSession session){        // 4.定位sql语句        String statement = "org.myBatis.mapping.user.delete";        // 5.执行sql语句        int result = session.delete(statement,1);        // 6.提交事务        session.commit();        // 7.获取结果        System.out.println(result);    }    public static void query(SqlSession session){        // 4.定位sql语句        String statement = "org.myBatis.mapping.user.select";        // 5.执行sql语句        User user = session.selectOne(statement,1);        // 6.输出查询结果        System.out.println(user);    }    public static void update(SqlSession session){        // 4.定位sql语句        String statement = "org.myBatis.mapping.user.update";        User user = new User();        user.setUserId(2);        user.setUserName("zhiliaotang");        user.setAddress("B7-2F");        user.setPhone("456456456");        // 5.执行sql语句        int result = session.update(statement,user);        // 6.提交事务        session.commit();        // 7.获取结果        System.out.println(result);    }}

注:新增,删除,修改需要对事务进行提交,才能正确执行。