IT虾米网

myBatis01详解

shasha 2018年07月05日 编程语言 189 0

 

 

1.创建对应的数据库以及需要的表

2.创建对应的java项目,引入需要的mybatis需要的jar,以及连接mysql数据库的jar!

 

3.创建对应的Student实体类

 

复制代码
/** 
 *学生的实体类 
 */ 
public class Student { 
    private Integer id; // 学生编号 
    private String name; // 姓名 
    private Integer age; // 年龄 
 
    /** 
     * 对应的有参无参构造以及对应的get和set方法 
     */ 
    public Student() { 
        super(); 
    } 
 
    public Student(Integer id, String name, Integer age) { 
        super(); 
        this.id = id; 
        this.name = name; 
        this.age = age; 
    } 
 
    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 Integer getAge() { 
        return age; 
    } 
 
    public void setAge(Integer age) { 
        this.age = age; 
    } 
 
}
复制代码

 

4.创建对应的接口以及mapper文件

 

复制代码
public interface StudentDao { 
    /** 
     * 新增学生信息 
     */ 
    void addStudent(Student student); 
}
复制代码

 

 

复制代码
<?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"> 
<mapper namespace="student"> 
    <insert id="addStudent" parameterType="cn.bdqn.bean.Student"> 
        insert into 
        student(age,name) values(#{age},#{name}) 
    </insert> 
</mapper>
复制代码

 

5.创建对应的实现类和工具类

 

复制代码
public class StudentDaoImpl implements StudentDao { 
 
    //新增学生 
    @Override 
    public void addStudent(Student student) { 
        SqlSession session=null; 
        try { 
            session = MyBatisUtils.getSession();  //获取session 
            /** 
             * 新增操作 
             * addStudent:一定要和mapper文件中 的 id一致! 
             */ 
            session.insert("addStudent", student); 
            /** 
             * 需要我们手动提交事务   02. 为什么 需要 手动提交 
             * 03.在底层代码中查看得出结论 
             *    底层的insert 以及delete 其实都是执行了 update操作 
             *    关键点在于 dirty!!! 
             * 04.怎么看到了session.commit  就是transaction.commit();  
             *     001.MyBatisUtils 的方法 openSession的时候!默认没有传递参数==>autoCommit=false 
             *         需要我们手动提交事务! 
             *     002.session.insert() 底层默认调用了update() 
             *          就是在update(),dirty=true!  数据是脏数据! 
             *     003. session.commit(); 底层 默认    transaction.commit(); 
             *          之后dirty=false!  因为已经同步到数据库中!不是脏数据了! 
             */ 
            session.commit(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        }finally{ 
            if (session!=null) { 
                session.close(); 
            } 
        } 
         
 
    } 
 
}
复制代码

 

 

 01.所有的增删改默认调用  update

02.update方法中有 一个非常重要的属性 是  dirty ===>脏!

 为什么需要提交!  dirty!!!

 

 

复制代码
/** 
 *  创建会话工厂的单例 
 */ 
public class MyBatisUtils { 
    //创建本类的静态变量 
    private static  SqlSessionFactory sessionFactory; 
     
    //私有化构造 
    private MyBatisUtils(){} 
     
    //对外访问的接口 
    public  static  SqlSession getSession(){ 
        try { 
            //读取mybatis的核心配置文件 
            InputStream stream = Resources.getResourceAsStream("mybatis.xml"); 
            if (sessionFactory==null) { //判断sessionFactory是否为空 
                sessionFactory=new SqlSessionFactoryBuilder().build(stream); 
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        //01.这里为什么不需要关闭流?   
        return  sessionFactory.openSession(); 
    } 
 
}
复制代码

 

 6.创建mybatis的核心配置文件和日志文件

 

复制代码
<?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> 
 
    <!-- 通过properties文件配置连接数据库的四要素 --> 
    <properties resource="jdbc.properties" /> 
     
     
    <!-- 设置别名 两种方式 --> 
    <typeAliases> 
           <!--  01.这种方式别名可以随意取  但是如果有多个 类 就需要配置多个typeAlias  
           <typeAlias type="cn.bdqn.bean.Student" alias="student"/> --> 
           <package name="cn.bdqn.bean"/><!-- 02.这种方式要求别名必须使用简写的类名  --> 
    </typeAliases> 
     
     
    <!-- 配置运行环境 可以有多个 environment --> 
    <environments default="mysql"><!-- 默认采用的环境 --> 
        <environment id="mysql"> <!-- 环境的名称 --> 
            <!--配置事务管理 采用jdbc默认的事务管理 之后整合的时候 肯定是交给了 spring来处理了 --> 
            <transactionManager type="JDBC" /> 
            <!-- 数据源采用的是连接池技术 POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 --> 
            <dataSource type="POOLED"> 
                <property name="driver" value="${jdbc.driver}" /> 
                <property name="url" value="${jdbc.url}" /> 
                <property name="username" value="${jdbc.username}" /> 
                <property name="password" value="${jdbc.password}" /> 
            </dataSource> 
        </environment> 
    </environments> 
    <!-- 加载映射文件信息 --> 
    <mappers> 
        <mapper resource="cn/bdqn/dao/StudentMapper.xml" /> 
    </mappers> 
</configuration> 
复制代码
jdbc.driver=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/mybatis 
jdbc.username=用户名 
jdbc.password=密码
复制代码
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.Target=System.out 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=[%-5p] %c %L %m %n 
 
log4j.rootLogger=trace,console
复制代码

 

 7.创建测试类测试

复制代码
public class StudentTest { 
 
    @Test 
    public void test() { 
        StudentDao dao = new StudentDaoImpl(); 
        dao.addStudent(new Student(1, "小黑", 10)); 
    } 
}
复制代码

 

8.查看运行结果

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

使用socket实现聊天功能详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。