• Java——mybatis(使用mybatis对mysql数据库进行增删改查的操作)


    第一步:这里现需要创建配置文件,创建文件名称为log4j.properties(也可以自取),在所创建的log4j.properties中进行配置,配置如下:

    log4j.rootLogger=DEBUG, Console
    
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    第二步:创建主配置文件,名为“SqlMapConfig.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">
                
                <!--解析:这里是添加驱动,还需要注意:这里我的mysql版本是8点多版本,所以在添加驱动时,还需要添加cj。
                如果版本不是那么高的话,驱动就这样的写(com.mysql.cj.jdbc.Driver),反正根据自己的来  -->
                    <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                    
                    <!--这里属于所访问的地址,还是需要注意一下:下面是由于我的mysql是8点多的版本,需要添加“?serverTimezone=UTC”这个,
                    因为这个是解决时区的问题,出现时区的问题,就加上,如果没有,就不加 。介绍:day是我的数据库,还是根据自己的来 -->
                    <property name="url" value="jdbc:mysql://localhost:3306/day?serverTimezone=UTC" />
                    
                    <!--用户  -->
                    <property name="username" value="root" />
                    
                    <!--这是mysql的密码,反正还是根据自己的mysql的密码  -->
                    <property name="password" value="123456" />
                    
                </dataSource>
            </environment>
        </environments>
        <mappers> 
        <!--这里是主配置文件(SqlMapConfig.xml)调用映射文件(user.xml),配置如下  -->
            <mapper resource="user.xml" /> 
        </mappers> 
    </configuration>

    第三步:创建一个类,定义一些属性,就是为了更好的理解。这里类名所取名为“text1”。

    package com.mybatis.app;
    
    public class text1 {
        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 "text1 [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
        
        public text1(String name,int age) {
            this.name=name;
            this.age=age;
        }
        public text1() {}
        
    }
    代码如下

    第四步:mybatis需要有映射文件,所以这步就是配置映射文件,我取名为“user.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:命令空间,用于隔离sql语句
       -->
       
    <mapper namespace="test">
    <!-- 作用: id是来用取别名
            parameterType定义输入到sql中的映射类型
            resultType定义结果映射类型    
    -->
        
        <!--查询  -->
        <!--这是通过id来查询 ,所以类型用整形 -->
        <select id="User" parameterType="int" resultType="com.mybatis.app.text1">
            select * from student where id=#{id}<!--#{id}是属于占位符  -->
        </select>
        
        <!--通过名称来查 ,所以类型就用字符串 -->
        <select id="Username" parameterType="String" resultType="com.mybatis.app.text1">
            select * from student where name like "%${name}%"
        </select>
        
        <!--添加  -->
        <insert id="addUser"  parameterType="com.mybatis.app.text1">
            insert into student(name,age) value(#{name},#{age})
        </insert>
        
        <!-- 删除 -->
        <delete id="deleteUser" parameterType="int">
            delete from student where id=#{id}
        </delete>
        
        <!--修改  -->
        <!-- 想要进行修改,就需要查询,所以先查询,再修改 -->
        <select id="selectUser" parameterType="String" resultType="com.mybatis.app.text1">
            select * from student where name=#{name}
        </select>
        
        <update id="updateUser" parameterType="com.mybatis.app.text1">
            update student set name=#{name} where id=#{id}    
        </update>
    </mapper>

     

    第五步:创建测试类,代码如下:

    package com.mybatis.app;
    
    
    import java.io.InputStream;
    import java.util.Iterator;
    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;
    
    public class text {
        //任务:通过员工的ID来查找
        public static void main(String [] args) throws Exception {//mybatis配置文件
            String sql="SqlMapConfig.xml";//这里的SqlMapConfig.xml是我的主配置
            
            
            //得到配置文件流
            InputStream inputStream = Resources.getResourceAsStream(sql);
            
            //创建会话工厂
            SqlSessionFactory sqlseesion=new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session =sqlseesion.openSession();
            
            //第一部分:查询
            //通过ID来查询
            text1 text =session.selectOne("test.User",2);//这里‘2’是查询id为2,并返回所有信息,selectOne方法只能查询一条数据
            System.out.println(text);
            //通过用户名来查询
            List<Object> text1= session.selectList("test.Username","李四");//selectList方法是用于集合,只要参数在集合中,则返回参数的信息。如果没有在集合中,则返回空集合
            System.out.println(text1);
            
            
            //第二步分:添加
            text1 addname=new text1("王小山",25);
            int n= session.insert("test.addUser", addname);
            //提交事务
            //注:添加以后需要提交,不然在mysql中看不到所添加的数据
            session.commit();
            if(n>0) {     
                System.out.println("添加成功!");
            }else {
                System.out.println("添加失败!");
            }
            
            
            //第三部分:删除
            session.delete("test.deleteUser", 8);//这里是通过id来进行删除的
            //提交事务
            session.commit();
            //关闭,释放资源
            session.close();
            
            
            //第四部分:修改
            //这是查询包含姓名为‘王’的信息,这里可以改写任意的条件
            List<text1> list=session.selectList("test.selectUser", "王");
            //isEmpty()方法是判断集合是否为空
            if(!list.isEmpty()) {
                //使用迭代器,也可以理解是获取集合中的所有元素
                Iterator<text1> ite=list.iterator();
                while (ite.hasNext()) {
                    //next()方法可以理解为是获取到第一行记录
                    text1 te=ite.next();
                    te.setName("旺旺1");//这里是进行所要改写的内容
                    session.update("test.updateUser", te);
                    //提交事务
                    session.commit();                
                }
                
            }
            //关闭,释放资源
            session.close();
        }
    }

    最终效果如下(注:这里只是一部分的效果(只有查询和添加),删除和修改在数据库中可以看见):

    注:想要完成以上的效果,所要用的包,如下:

  • 相关阅读:
    第二部分 设计类型:第8章 方法
    centos7 网卡重命名
    centos7修改主机名
    修改umask值
    mysql表字段属性
    mysql基础操作
    mysql错误代码ERROR 1045 (转载)
    sed高级用法
    shell拷贝原文件到目标对应文件夹
    函数(位置传参)
  • 原文地址:https://www.cnblogs.com/zhang1314/p/13549680.html
Copyright © 2020-2023  润新知