1.新建项目,添加mybatis和mysql的jar包

2.在mysql中新建表user[id,name,age]

  1. CREATE TABLE `users` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `NAME` varchar(50) default NULL,
  4. `age` int(11) default NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8

3.新建User类,与db的表对应

  1. public class User {
  2.  
  3. public User() {
  4. }
  5. public User(int id, String name, int age) {
  6. super();
  7. this.id = id;
  8. this.name = name;
  9. this.age = age;
  10. }
  11. private int id;
  12. private String name;
  13. private int age;
  14. public int getId() {
  15. return id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getName() {
  21. return name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. public int getAge() {
  27. return age;
  28. }
  29. public void setAge(int age) {
  30. this.age = age;
  31. }
  32. @Override
  33. public String toString() {
  34. return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
  35. }
  36.  
  37. }

4.在src目录下面新建mybatis的配置文件conf.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!--
  5. development:开发模式
  6. work:工作模式
  7. -->
  8. <environments default="development">
  9. <environment id="development">
  10. <transactionManager type="JDBC" />
  11. <dataSource type="POOLED">
  12. <property name="driver" value="com.mysql.jdbc.Driver" />
  13. <property name="url" value="jdbc:mysql://localhost:3306/mybatis?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" />
  14. <property name="username" value="root" />
  15. <property name="password" value="root" />
  16. </dataSource>
  17. </environment>
  18. </environments>
  19.  
  20. </configuration>

5.新建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的标签,在此要在Window-Preference-Xml Catalog中配置mybatis-3-mapper.dtd,
  5. key=-//mybatis.org//DTD Mapper 3.0//EN
  6. -->
  7. <mapper namespace="com.mlxs.mybatis.test.userMapper">
  8.  
  9. <select id="getUser" parameterType="int" resultType="com.mlxs.mybatis.test1.User">
  10. select * from users where id=#{id}
  11. </select>
  12.  
  13. <!-- 添加,参数是一个user对象 -->
  14. <insert id="addUser" parameterType="com.mlxs.mybatis.test1.User">
  15. insert into users(name,age) values(#{name},#{age})
  16. </insert>
  17. <!-- 更新,参数是一个user对象 -->
  18. <insert id="updateUser" parameterType="com.mlxs.mybatis.test1.User">
  19. update users set name=#{name}, age=#{age} where id=#{id}
  20. </insert>
  21. <!-- 添加,参数是一个user对象 -->
  22. <insert id="deleteUser" parameterType="int">
  23. delete from users where id=#{id}
  24. </insert>
  25.  
  26. <!-- 返回一个list,resultType="包名+类名":必须在类中有个无参的构造函数,不然会报错:
  27. java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
  28. Caused by: java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()
  29. at java.lang.Class.getConstructor0(Class.java:2706)
  30. at java.lang.Class.getDeclaredConstructor(Class.java:1985)
  31. at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)
  32. -->
  33. <select id="selectAllUsers" resultType="com.mlxs.mybatis.test1.User">
  34. select * from users
  35. </select>
  36. </mapper>

将mapper配置文件添加到mybatis的配置文件conf.xml的mappers标签中:

  1. <!-- 在conf.xml文件中注册Mapper.xml文件和Mapper类 -->
  2. <mappers>
  3. <mapper resource="com/mlxs/mybatis/test1/userMapper.xml" />
  4.  
  5. </mappers>

6.添加测试类,获取一个user的信息

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.Reader;
  4.  
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9.  
  10. public class _Test1SelectOne {
  11. public static void main(String[] args) throws IOException {
  12. //加载mybatis的xml文件(同时加载加载关联的映射文件)
  13. //1.使用类加载器加载mybatis的配置文件
  14. // InputStream config = _Test1SelectOne.class.getClassLoader().getResourceAsStream("conf.xml");
  15. //2.使用mybatis的Resources类加载
  16. Reader config = Resources.getResourceAsReader("conf.xml");
  17. //创建sqlSessionFactory
  18. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
  19. //创建sqlSession,执行mapper.xml中的sql语句
  20. SqlSession sqlSession = sessionFactory.openSession();
  21. //执行映射文件中的sql(namespace + select的id)
  22. String sql = "com.mlxs.mybatis.test.userMapper.getUser";
  23. User user = sqlSession.selectOne(sql, "1");//查询id=1
  24. //关闭session
  25. sqlSession.close();
  26. System.out.println(user);
  27. }
  28. }

7.结果

User [id=1, name=Tom, age=12]

8.测试 增删改查,导入junit包,添加测试类

  1. import java.util.List;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.junit.Test;
  6.  
  7. import com.mlxs.mybatis.util.MyBatisUtil;
  8.  
  9. public class _Test2UserCrud {
  10.  
  11. @Test
  12. public void addUser(){
  13. SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
  14. SqlSession sqlSession = sessionFactory.openSession();
  15. String statement = "com.mlxs.mybatis.test.userMapper.addUser";
  16. int count = sqlSession.insert(statement, new User(0, "add1", 10));
  17. sqlSession.commit();
  18. sqlSession.close();
  19. System.out.println("add count:"+count);
  20. }
  21. @Test
  22. public void updateUser(){
  23. SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
  24. SqlSession sqlSession = sessionFactory.openSession();
  25. String statement = "com.mlxs.mybatis.test.userMapper.updateUser";
  26. int count = sqlSession.update(statement, new User(3, "update2", 100));
  27. sqlSession.commit();
  28. sqlSession.close();
  29. System.out.println("update count:"+count);
  30. }
  31. @Test
  32. public void delUser(){
  33. SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
  34. boolean autoCommit = true;//自动提交,不需手动commit
  35. SqlSession sqlSession = sessionFactory.openSession(autoCommit);
  36. String statement = "com.mlxs.mybatis.test.userMapper.deleteUser";
  37. int count = sqlSession.delete(statement, 4);
  38. sqlSession.close();
  39. System.out.println("del count:"+count);
  40. }
  41. @Test
  42. public void selectAll(){
  43. SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
  44. boolean autoCommit = true;//自动提交,不需手动commit
  45. SqlSession sqlSession = sessionFactory.openSession(autoCommit);
  46. String statement = "com.mlxs.mybatis.test.userMapper.selectAllUsers";
  47. List<User> userList = sqlSession.selectList(statement);
  48. sqlSession.close();
  49. System.out.println(userList);
  50. }
  51. }

2.mybatis入门实例 连接数据库进行查询的更多相关文章

  1. Mybatis入门实例

    MyBatis 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  2. Mybatis入门实例解析

    写在前面:本文全程根据Mybatis官网进行入门讲解.毫无疑问,官方文档是学习这门技术最权威的资料,与此同时我们也知道官方文档对待入门小白基本上不太友好,没有入门demo.开篇就是小白们不懂的内容.有 ...

  3. MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理

    1.我的开发环境是 jdk1.7+ecplise+oracle 11g 用到的jar包:mybatis-3.1.1.jar ojdbc6.jar 2.项目整体结构     3.首先配置conf.xml ...

  4. MyBatis入门实例 ——Mapper.xml(zz)

    <?xml version="1.0" encoding="UTF-8" ?>    <!DOCTYPE mapper        PUBL ...

  5. mybatis入门案例分析

    mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exce ...

  6. mybatis 详解(二)------入门实例(基于XML)

    通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...

  7. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  8. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

  9. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

随机推荐

  1. linux strace

    yum install -y strace 若某一进程占用cpu高可以用strace -p pid进行跟踪查看 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直 ...

  2. json校验

    直接百度:json在线解析  或  json.cnhttp://json.cn/ json格式校验的.这个更加简洁些.

  3. ASP.NET MVC下的四种验证编程方式【转】

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...

  4. flex 调用gp服务

    同步异步说明: gp服务分为同步和异步两种模式,两者的区别是:同步:适合于快速的处理,数据量较小,本质区别在于同步模式,服务器处理之后,处理结果并不在服务器端保存,而是将结果发送至客户端,由客户端去显 ...

  5. Reverse Linked List II

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  6. 安装新版xampp后apache无法启动提示:Apache Service detected with wrong path解决方案

    我以前安装过xampp,因为学习thingPHP需要升级PHP5.0以上,所以我就卸掉了xampp,从新安装新版本的xampp其中PHP是最新版的,但是安装后启动xampp提示如下:Apache Se ...

  7. git 上传本地文件到github

    git 上传本地文件到github 1 git config --global user.name "Your Real Name" 2 git config --global u ...

  8. PHP 设计模式之观察者模式

    现在有两派,有的人建议使用设计模式,有的人不建议使用设计模式!这就向写文章一样,有的人喜欢文章按照套路走,比如叙事性质的文章,时间,地点,人物,事件.而有的人喜欢写杂文或者散文,有的人喜欢写诗词! 现 ...

  9. Python 中translate()与replace()区别

    translate函数和replace函数一样,用于替换字符串中的某个部分,但是和replace不同,translate只处理单个字符,而且可以同时进行多个替换.在使用translate函数转换之前, ...

  10. 巧用ViewPager 打造不一样的广告轮播切换效果

    一.概述 如果大家关注了我的微信公众号的话,一定知道我在5月6号的时候推送了一篇文章,文章名为Android超高仿QQ附近的人搜索展示(一),通过该文可以利用ViewPager实现单页显示多个Item ...