Mybatis练习(1)

来源:互联网 发布:简易版支付系统源码 编辑:程序博客网 时间:2024/04/30 06:10
   由于之前项目用到的都是Hibernate,现在突然改用MyBatis,所以要重新研究一下,还好基本原理是差不离。在Hibernate的基础上再去学MyBatis,个人觉得起到了事半功倍的作用。

  MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

 好,创建JavaWeb项目这些太基础咱们就不去说了,添加相应的Jar包,一个是mybatis的jar包mybatis-3.2.8.jar,一个是数据库驱动的,我用的是mysql所以是mysql-connector-java-3.0.14-production-bin.jar。

   添加Mybatis的配置文件conf.xml

 在src目录下创建一个conf.xml文件,如下图所示:

conf.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">
                 <property name="driver" value="com.mysql.jdbc.Driver" />
                 <property name="url" value="jdbc:mysql://localhost:3306/test" />
                 <property name="username" value="root" />
                 <property name="password" value="root" />
             </dataSource>
         </environment>
     </environments>

 </configuration>

 定义表对应的实体类

 

public class User {


private int id;
private String name;
private String password;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}


}

定义操作user表的sql映射文件user.xml,我直接放在实体类对应的包下


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">
<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
 -->
<mapper namespace="com.ucs.test.model.User">
    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
    User类就是users表所对应的实体类
    -->
    <!-- 
        根据id查询得到一个user对象
     -->
     <resultMap type="com.ucs.test.model.User" id="userResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="password" column="password"/>

</resultMap>

<insert id="addUser" parameterType="com.ucs.test.model.User">
insert into user (name,password) values (#{name},#{password})
</insert>
    <select id="getUser" parameterType="int" 
        resultType="com.ucs.test.model.User">
        select * from user where id=#{id}
    </select>
     
</mapper>

在conf.xml文件中注册user.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">
                 <property name="driver" value="com.mysql.jdbc.Driver" />
                 <property name="url" value="jdbc:mysql://localhost:3306/test" />
                 <property name="username" value="root" />
                 <property name="password" value="root" />
             </dataSource>
         </environment>
     </environments>
     
     <mappers>
     <mapper  resource="com/ucs/test/model/user.xml"/>
     </mappers>
 </configuration>

编写测试代码:执行定义的语句

public class Test {


public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "conf.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
// InputStream is =
// Test.class.getClassLoader().getResourceAsStream(resource);


// 构建sqlSession的工厂
// SqlSessionFactory sessionFactory = new
// SqlSessionFactoryBuilder().build(is);
// 使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();


/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.ucs.test.model.User.getUser";// 映射sql的标识字符串
// com.ucs.test.model.user
// 执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
session.close();
System.out.println("name:"+user.getName());
}


}


最后有问题可以联系qq:1774900724

  
1 0
原创粉丝点击