六个文件开启mybatis之旅

来源:互联网 发布:景区网络运营方案 编辑:程序博客网 时间:2024/06/04 18:34

第一个文件(POJO):User.java

public class User {    private Long id;    private String name;    private String sex;    private int age;    public User() {    }    public User(String name, String sex, int age) {        this.name = name;        this.sex = sex;        this.age = age;    }    //省略了getter,setter}

第二个文件UserMapper.java

public interface UserMapper {    public void save(User user);    public User getUser(Long id);    }

第三个文件(配置文件)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>    <settings>        <setting name="cacheEnabled" value="false"/>        <setting name="useGeneratedKeys" value="true"/>        <setting name="defaultExecutorType" value="REUSE"/>    </settings>    <typeAliases>        <typeAlias type="mybatis.User" alias="User"></typeAlias>    </typeAliases>    <environments default="development">        <environment id="development">            <transactionManager type="jdbc"></transactionManager>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost/test"/>                <property name="username" value="root"/>                <property name="password" value="password"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="UserMapper.xml"/>    </mappers></configuration>

第四个文件(映射文件)UserMapper.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"><mapper namespace="mybatis.UserMapper">    <insert id="save" parameterType="User">        insert into "user"(name,age,sex) values(#{name},#{age},#{sex})    </insert>    <select id="getUser" parameterType="java.lang.Long">        SELECT * FROM "user" where id=#{id}    </select></mapper>

第五个文件(工具类)MybatisUtil.java

public class MyBatisUtil {    private final static SqlSessionFactory sqlSessionFactory;    static {        String resource = "mybatis-config.xml";        Reader reader = null;        try {            reader = Resources.getResourceAsReader(resource);        } catch (IOException e) {            e.printStackTrace();        }        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);    }    public static SqlSessionFactory getSqlSessionFactory(){        return sqlSessionFactory;    }}

第六个文件(测试类)TestMapper.java

public class TestMapper {    static SqlSessionFactory sqlSessionFactory= null;    static {        sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();    }    @Test    public void testSave(){        SqlSession sqlSession = sqlSessionFactory.openSession();        try {            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);            User user = new User("Tom","男",13);            userMapper.save(user);            sqlSession.commit();        } finally {            sqlSession.close();        }    }    @Test    public void getUser(){        SqlSession sqlSession = sqlSessionFactory.openSession();        try {            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);            User user = userMapper.getUser(1L);            System.out.println("name:"+user.getName());        } finally {            sqlSession.close();        }    }}

note (如果以上代码你直接copy过去的话,以下的问题似乎并不会出现….emmm就当做个记录吧):

1 配置文件和映射文件的文件头别搞混了,不然会报出莫名其妙的错误——Cause: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 36; 必须为元素类型 “mapper” 声明属性 “namespace”。

UserMapper.xml

mybatis-config.xml

2 配置文件里别把mapper忘了,不然就会报错——Type interface com.UserMapper is not known to the MapperRegistry(这个错误一般智商不会犯#捂脸#)

这里写图片描述