1、MyBatis入门

来源:互联网 发布:淘宝客推广计划怎么写 编辑:程序博客网 时间:2024/05/22 18:28

      在学习JDBC时,写着无聊的SQL语句,真真是讨厌死了,真心想不写。于是我们遇见了Hibernate框架,把我们从写SQL语句中解救了出来,而现在我们开始的MyBatis又需要我们写SQL了,只是写在xml文件中了。让我们开始MyBatis的学习!


稍微看一下MyBatis文件中的作用:
这里写图片描述

第一步:创建java工程,导入核心包和依赖包
不要忘了数据库驱动。
这里写图片描述
还有log4j的属性文件:

### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:/mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout

第二步:创建核心配置文件
SqlMapConfig.xml为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>    <environments default="development">        <environment id="development">            <!-- 使用JDBC事务管理 -->            <transactionManager type="JDBC" />            <!-- 配置数据库连接池 -->            <dataSource type="POOLED">                  <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url" value="jdbc:mysql:///mybatisDB" />                <property name="username" value="root" />                <property name="password" value="zu3.141592653" />            </dataSource>        </environment>    </environments></configuration>

第三步:创建实体类

package cn.xpu.hcp.bean;import java.sql.Date;public class User {    private int id;    private String username;    private String sex;    private Date birthday;    private String address;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public User() {        super();    }    public User(int id, String username, String sex, Date birthday,            String address) {        super();        this.id = id;        this.username = username;        this.sex = sex;        this.birthday = birthday;        this.address = address;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", sex=" + sex                + ", birthday=" + birthday + ", address=" + address + "]";    }}

第四步:创建表

CREATE TABLE `user`(    `id` INT(11) NOT NULL AUTO_INCREMENT,    `username` VARCHAR(32) NOT NULL COMMENT '用户名称',    `birthday` DATE DEFAULT NULL COMMENT '生日',    `sex` CHAR(1) DEFAULT NULL COMMENT '性别',    `address` VARCHAR(256) DEFAULT NULL COMMENT '地址',    PRIMARY KEY (`id`))ENGINE=INNODB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

第五步:创建sql映射文件
实现根据ID查找User:

<?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="UserTest"><!-- id:statement的id,我们可以选择使用哪个id的sqlparameterType:输入参数的类型resultType:输出结果的类型,我们要使用全路径#{}:占位符,相当于? -->    <select id="GetUserByID" parameterType="int" resultType="cn.xpu.hcp.bean.User">        select * from user where id = #{id}    </select></mapper>

第六步:将User.xml加载到核心配置文件中

<mappers>        <mapper resource="cn/xpu/hcp/bean/User.xml"/></mappers>

第七步:生成测试类

public class MyBatisTest {    /*     * MyBatis测试程序步骤:     * 1、创建SqlSessionFactoryBuilder对象     * 2、加载SqlMapConfig.xml配置文件     * 3、创建SqlSessionFactory对象     * 4、创建SqlSession对象     * 5、使用SqlSession对象执行查询     * 6、释放资源     * */    private SqlSessionFactory sqlSessionFactory = null;    @Before    public void before(){        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();        try {            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");            sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);        } catch (IOException e) {            e.printStackTrace();        }    }    @Test    public void getUserById(){        SqlSession session = sqlSessionFactory.openSession();        User user = session.selectOne("GetUserByID", 1);        System.out.println(user);        session.close();    }}

测试结果:
这里写图片描述