Mybatis入门 操作MySQL DEMO

来源:互联网 发布:淘宝三颗心要多少好评 编辑:程序博客网 时间:2024/06/06 00:56

简介

  • Mybatis 是对数据库操作进行封装的一个框架。

  • Mybatis依赖包 - mybatis-3.2.8.jar

  • mysql驱动包 - mysql-connector-java-5.1.29.jar

  • demo 下载

数据库准备

  • 新建数据库 db_ke
  • 新建数据表 user
字段 类型 id int name varcher

项目结构

  • 新建Java Project
    这里写图片描述
  • 添加依赖包

    • 新建文件夹lib,并把mybatis包和mysql驱动包拷贝进去
    • 分别在包上 右击 -> Build Path -> Add to Build Path。
  • 新建包

    • com.wangshike.config
    • com.wangshike.mapper
    • com.wangshike.pojo
    • config用来放置所需的 配置文件;
    • mapper用来放置 SQL映射文件;
    • pojo用来放置实体类,还可以叫model、bean

实体类

  • pojo包下新建 实体类 User.java

    • 实体类字段类型要与数据表相对应
  • User.java 代码:

    package com.wangshike.pojo;public class User {    private int userID;    private String userName;    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;    }    @Override    public String toString() {        return "id:"+userID+"  name:"+userName;    }}

SQL 映射文件

  • mapper包下新建 SQL映射文件 UserMapper.xml

    • insert、delete、update、select四个标签提供相应的数据操作
    • parameterType 为传入参数,通过 #{属性名} 取值
    • resultType 为返回参数
  • 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"><!-- 指定唯一的namespace,惯例是包名+文件名--><mapper namespace="com.wangshike.mapper.UserMapper">    <!-- 增添 -->    <insert id="add" parameterType="User" >        insert into user(id, name ) values (#{userID}, #{userName})         </insert>    <!-- 删除 -->    <delete id="delete" parameterType="int" >        delete from user where id=#{userID}    </delete>    <!-- 更新-->    <update id="update" parameterType="User" >        update user set name=#{userName} where id=#{userID}    </update>    <!-- 查询-->    <select id="search" parameterType="int" resultType="User">        select id as userID, name as userName from user where id=#{userID}    </select>    <!-- 查询 全部 此处返回List<User> -->    <select id="searchAll" resultType="User">        select id as userID, name as userName from user    </select></mapper>

Mybatis 配置文件

  • config包下新建 配置文件 mybatis.xml

    • <typeAliases>配置 实体类的昵称,供mapper.xml文件使用
    • <environments>配置 mysql 数据库连接信息
    • <mappers>配置 数据库操作文件

    • 配置文件标签顺序必须是下面顺序:

      propertiessettingstypeHandlersobjectFactoryobjectWrapperFactorypluginsenvironmentsdatabaseIdProvidermappers
  • 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>        <!-- type就是完整实体类名,mapper.xml可以直接使用User,而不必书写完整路径com.wangshike.pojo.User -->        <typeAlias type="com.wangshike.pojo.User" alias="User"/>    </typeAliases>    <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/db_ke" />                    <property name="username" value="root" />                    <property name="password" value="123456" />            </dataSource>        </environment>    </environments>    <mappers>        <!-- 关联映射文件 -->        <mapper resource="com/wangshike/mapper/UserMapper.xml"/>    </mappers></configuration>

测试类

  • com.wangshike包下新建 测试类 Test1.java

    • 实体类字段类型要与数据表相对应
    • 测试 插入一条记录,结果返回1,代表插入成功。
  • Test1.java 代码:

    package com.wangshike;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.wangshike.pojo.User;public class Test1 {    public static void main(String[] args) throws IOException {        //使用类加载器加载mybatis的配置文件(同时加载关联的映射文件)        InputStream is = Test1.class.getClassLoader()            .getResourceAsStream("com/wangshike/config/mybatis.xml");        //构建sqlSession的工厂        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);        //创建能执行映射文件中sql的sqlSession        SqlSession session = sessionFactory.openSession();        //映射sql的标识字符串        String statement = "com.wangshike.mapper.UserMapper.add";        User user = new User();        user.setUserID(11);        user.setUserName("test");        //执行查询返回一个唯一user对象的sql        int i = session.insert(statement, user);        System.out.println("结果:"+i);    }}

接口文件

  • mapper包下新建 接口文件 UserMapper.java

    • 一定要和SQL映射文件命名和路径一致 (UserMapper.xml)
    • 提供的方法要和SQL映射文件里的配置一致
  • UserMapper.java 代码:

    package com.wangshike.mapper;import java.util.List;import com.wangshike.pojo.User;public interface UserMapper {    public boolean add(User user);    public boolean delete(int userID);    public boolean update(User user);    public User search(int userID);    public List<User> searchAll();}

测试类

  • 测试类Test1.java 修改

  • Test1.java 代码:

    package com.wangshike;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.wangshike.mapper.UserMapper;import com.wangshike.pojo.User;public class Test1 {    public static void main(String[] args) throws IOException {        //使用类加载器加载mybatis的配置文件(同时加载关联的映射文件)        InputStream is = Test1.class.getClassLoader()            .getResourceAsStream("com/wangshike/config/mybatis.xml");        //构建sqlSession的工厂        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);        //创建能执行映射文件中sql的sqlSession        SqlSession session = sessionFactory.openSession();        User user = new User();        user.setUserID(12);        user.setUserName("wnagshike");        //会去UserMapper.class的目录下查找UserMapper.xml,并匹配方法        UserMapper mapper = session.getMapper(UserMapper.class);                    System.out.println("----------------添加测试----------------");        boolean addState = mapper.add(user);        System.out.println("addstate:"+addState);        System.out.println("----------------更新测试----------------");        user.setUserName("wsk");        boolean updateState = mapper.update(user);        System.out.println("updatestate:"+updateState);        System.out.println("----------------查询测试----------------");        User resultUser = mapper.search(12);        System.out.println("resultUser:"+resultUser.toString());        System.out.println("----------------查询测试----------------");        List<User> userList = mapper.searchAll();        System.out.println("size:"+userList.size());        for (int i = 0; i < userList.size(); i++) {            System.out.println("resultUser:"+userList.get(i).toString());        }     }}

    这里写图片描述

原创粉丝点击