健康一贴灵,专注医药行业管理信息化

Mybatis学习手记(一)

 年近不惑,为生活所迫,重新开始学习JAVA,计划将公司的开发平台统一到JAVA上来。现公司的技术杂乱,有PB开发的程序要维护、有PYTHON的程序要维护,有.NET的,也有JAVA的,非常不容易形成合力。

前段时间看了几个开源的企业开发框架,希望能带领部门基于jeesite框架来开发,所以自己要尽可能多的熟悉相关技术和框架,照着网上的例子练了JAVABEAN /JSP /SERVLET /JDBC,做了几个Helloworld ,一直还算顺利.。结合网上对Mybatis和Hibermete的对比,决定学习这个简单的Mybatis框架。

 

感谢“孤傲苍狼”的博客,MyBatis学习总结(一)——MyBatis快速入门  ,此文基本是转载原文。

一个例子,折腾了3天才出来,碰到的坑太多了也是真的够了。

遇到的错误至今无法解决,估计是版本兼容的问题(原环境Eclipse 4.7.1a、jdk1.8 161 、Mysql 57 、tomcat 8.5 );

最终的解决方法,是在虚拟机中新建了一套环境,用的ECLIPSE 4.5.2 、JDK 1.7 、MYSQ 57、TOMCAT 8.0 才跑出来;

复盘一下:

1、创建数据库及表

CREATE DATABASE MYBATIS;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO USERS (NAME,AGE) VALUES("LINGRUI",25);

2、下载Mysql 和Mybatis驱动包

(因为Eclipse用的不熟,我是将这两个包,通过“Build Path "---"Configure Build Path "----"Libraries"---AddJARS加入到路径中的;)

3、创建Mybatis 环境配置 xml ,文件名可以自已随便起,我随例子一样,在SRC目录下,创建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" />
                <!-- mybatis就是你创建的数据库名字,注意端口号 -->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>
</configuration>

4、定义表所对应的实体类 User.java 

 1 package Mybatis;
 2 
 3 
 5 /**
 6  * @author gacl
 7  * users表所对应的实体类
 8  */
 9 public class User {
10 
11     //实体类的属性和表的字段名称一一对应
12     private int id;
13     private String name;
14     private int age;
15 
16     public int getId() {
17         return id;
18     }
19 
20     public void setId(int id) {
21         this.id = id;
22     }
23 
24     public String getName() {
25         return name;
26     }
27 
28     public void setName(String name) {
29         this.name = name;
30     }
31 
32     public int getAge() {
33         return age;
34     }
35 
36     public void setAge(int age) {
37         this.age = age;
38     }
39 
40     @Override
41     public String toString() {
42         return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
43     }
44 }

5、定义操作users表的sql映射文件userMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 
 4 <!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
 5   例如namespace="Mybatis.userMapper"就是Mybatis(包名)+userMapper(userMapper.xml文件去除后缀)
 6    -->
 7 <mapper namespace="Mybatis.userMapper">
 8 
 9     <select id = "getUser" parameterType="int"         resultType="Mybatis.User">
10         select * from users where id=#{id}
11     </select >
12 </mapper>

6、在CONF.XML中注册userMapper.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/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 注册userMapper.xml文件, 
        userMapper.xml位于Mybatis这个包下,所以resource写成Mybatis/userMapper.xml-->
        <mapper resource="Mybatis/userMapper.xml"/>
    </mappers>
    
</configuration>

 

7、创建测试用例;Test1.java

 1 package Mybatis;
 2 
 3 
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.Reader;
 7 
 8 import org.apache.ibatis.io.Resources;
 9 import org.apache.ibatis.session.SqlSession;
10 import org.apache.ibatis.session.SqlSessionFactory;
11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
12 
13 public class Test1 {
14 
15     public static void main(String[] args) throws IOException {
16         //mybatis的配置文件
17         String resource = "conf.xml";
18         //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
19         InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
20 
21         //构建sqlSession的工厂
22         //System.out.println(is);
23         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
24         //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
25         //Reader reader = Resources.getResourceAsReader(resource); 
26         //构建sqlSession的工厂
27         //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
28         //创建能执行映射文件中sql的sqlSession
29         SqlSession session = sessionFactory.openSession();
30         /**
31          * 映射sql的标识字符串,
32          * Mybatis.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
33          * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
34          */
35         String statement = "Mybatis.userMapper.getUser";//映射sql的标识字符串
36         //执行查询返回一个唯一user对象的sql
37         User user = session.selectOne(statement, 1);
38         System.out.println(user);
39     }
40 }

 

 历经九九八十一难,终修成佛,成功看到控制台的运行结果;

 

原博客:MyBatis学习总结(一)——MyBatis快速入门  此文有适里改动

posted @ 2018-01-19 14:31  一贴灵  阅读(357)  评论(0编辑  收藏  举报
学以致用,效率第一