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();
    }
}

 

 

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

 

 

 

 

 

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

 

posted @ 2020-08-23 16:54  hell_o  阅读(1378)  评论(0编辑  收藏  举报