• MyBatis操作数据库(基本增删改查)


    一、准备所需工具(jar包和数据库驱动)

    网上搜索下载就可以

    二、新建一个Java project

    1、将下载好的包导入项目中,build path

    2、编写MyBatis配置文件:主要填写property标签中的四个value

    myBatis-config.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" />
                <dataSource type="POOLED">
                <!--数据库驱动、路径、用户名、密码  -->
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/hr_oa" />
                    <property name="username" value="root" />
                    <property name="password" value="root" />
                </dataSource>
            </environment>
        </environments>
        
        <mappers>
    
    <!--resource是映射文件的路径 -->
    
        </mappers>
    </configuration>

    3、建数据库对应的实体类

    package cn.mg39.ssm01.entity;
    
    import java.io.Serializable;
    
    /**
     *实体类 SysGroup
     *
     */
    public class SysGroup implements Serializable{
        private static final long serialVersionUID = 1L;
        private Integer id;        //主键id
        private String name;    //分组名
        private String remark;    //备注
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getRemark() {
            return remark;
        }
        public void setRemark(String remark) {
            this.remark = remark;
        }
        public SysGroup() {
            super();
            // TODO Auto-generated constructor stub
        }
        public SysGroup(Integer id, String name, String remark) {
            super();
            this.id = id;
            this.name = name;
            this.remark = remark;
        }
        public SysGroup(Integer id) {
            super();
            this.id = id;
        }
        @Override
        public String toString() {
            return "SysGroup [id=" + id + ", name=" + name + ", remark=" + remark + "]";
        }
        
        
        
    }

    三、编写Dao接口

    一些增删改查的方法

    package cn.mg39.ssm01.dao;
    
    import java.util.List;
    
    import cn.mg39.ssm01.entity.SysGroup;
    
    /**
     * SysGroup的Dao
     *    
     */
    public interface SysGroupDao {
        /**
         * 增删改查接口
         * @param sysGroup
         * @return
         */
        public Integer insert(SysGroup sysGroup);
        public Integer delete(SysGroup sysGroup);
        public Integer update(SysGroup sysGroup);
        public List<SysGroup> selectAll();
        public SysGroup selectById(SysGroup sysGroup);
        
    }

    四、编写Mapper文件

    SysGroupDaoMapper.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="cn.mg39.ssm01.dao.SysGroupDao">
    
        <!--parameterType实体的全类名 (传给数据库的参数类型) -->
        <!--#后的变量名要和实体的变量名一致  -->
        <!--如果有外键,直接在变量名后.外键名。如 #{tbA.id} -->
        
        <!--增删改查  -->
        <insert id="insert" parameterType="cn.mg39.ssm01.entity.SysGroup">
            insert into sys_group(name,remark) values(#{name},#{remark})
        </insert>
        
        <delete id="delete" parameterType="cn.mg39.ssm01.entity.SysGroup">
            delete from sys_group where id = #{id}
        </delete>
        
        <update id="update" parameterType="cn.mg39.ssm01.entity.SysGroup">
            update sys_group set name = #{name} ,remark = #{remark} where id = #{id}
        </update>
        
        <select id="selectAll"
                resultType="cn.mg39.ssm01.entity.SysGroup">
            select * from sys_group
        </select>
        
        <!--resultType(返回值类型,只有查询全部时需要,因为要接收传回的数据)  -->
        <select id="selectById" 
                parameterType="cn.mg39.ssm01.entity.SysGroup" 
                resultType="cn.mg39.ssm01.entity.SysGroup">
            select * from sys_group where id = #{id}
        </select>
    
    </mapper>

    五、在myBatis-config.xml中添加映射

    在myBatis-config.xml的<mappers>中添加Mapper映射,测试时会找mapper

        <mappers>
    
            <!--resource是映射文件的路径,Mapper文件放在cn.mg39.ssm01.dao下。 -->
            <mapper resource="cn/mg39/ssm01/dao/SysGroupDaoMapper.xml" />
           
        </mappers>

    六、测试数据操作

    1、插入数据

    (删除,修改和插入差不多)

    package cn.mg39.ssm01.test;
    
    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;
    
    import cn.mg39.ssm01.entity.SysGroup;
    
    /**
     * mybatis的增加测试
     *
     */
    public class InsertSysGroup {
        public static void main(String[] args) throws IOException {
            //1、读取配置文件
            Reader reader = Resources.getResourceAsReader("myBatis-config.xml");
            
            //2、创建sqlSessionFactoryBuilder(工人)
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            
            //3、创建SqlSessionFactory(建厂,将配置文件加入工厂)
            SqlSessionFactory factory = builder.build(reader);
            
            //4、打开SqlSession(通过工厂加工需要的数据)
            SqlSession session = factory.openSession();
            
            //5、操作数据(实例化对象)
            SysGroup sysGroup = new SysGroup();
            //id是自增长,不需要插入
            //插入外键的操作
            //sysGroup.set外键名(new 外键表(数据));
            sysGroup.setName("测试数据的name");
            sysGroup.setRemark("测试数据的remark");
            
            //命名空间+id,通过session找配置文件,再通过配置文件找到映射文件,
            //再通过命名空间找到需要进行数据操作的实体,通过id名找到对象的CRUD操作。将实例化的对象作为参数传过去
            //最后存session
            int rows = session.insert("cn.mg39.ssm01.dao.SysGroupDao.insert", sysGroup);
            System.out.println(rows > 0 ? "插入成功":"插入失败");
            
            //6、提交事务(查询全部不需要提交事务)
            session.commit();
            
            //7、关闭sqlSession
            session.close();
        }
    }

    2、查询全部数据

    package cn.mg39.ssm01.test;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import cn.mg39.ssm01.entity.SysGroup;
    
    public class SelectAllSysGroup {
        public static void main(String[] args) throws IOException {
            // 加载配置文件
            Reader reader = Resources.getResourceAsReader("myBatis-config.xml");
            // 工人
            SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
            // 工厂
            SqlSessionFactory ssf = ssfb.build(reader);
            // 打开session
            SqlSession session = ssf.openSession();
            // 操作数据(查询全部不需要传递参数给数据库)
            SysGroup sysGroup = new SysGroup();
            
            List<SysGroup> list = session.selectList("cn.mg39.ssm01.dao.SysGroupDao.selectAll");
            //循环list取值
            for (SysGroup sys : list) {
                //将获取到的数据赋值给对象,最后打印
                sysGroup.setId(sys.getId());
                sysGroup.setName(sys.getName());
                sysGroup.setRemark(sys.getRemark());
                System.out.println(sysGroup);
            }
            // 提交事务(可不写)
            session.commit();
            // 关闭session
            session.close();
        }
    }
  • 相关阅读:
    (转载)C#控件缩写规范
    ToString()格式和用法大全,C#实现保留两位小数的方法
    C#数字前面如何补0
    (转载)C#语言开发规范
    (转载)C#:Enum、Int和String的互相转换,枚举转换
    [踩坑系列]URLEncode 中对 空格的编码有 “+”和“%20”两种
    [IDEA]IDEA设置注释模板
    [Mybatis]Mybatis 常用标签及功能整理
    [设计模式]静态代理
    记一次java电话面试
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/12057439.html
Copyright © 2020-2023  润新知