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

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

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`NAME` varchar(50) default NULL,
`age` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

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

public class User {

    public User() {
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
} }

4.在src目录下面新建mybatis的配置文件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>
<!--
development:开发模式
work:工作模式
-->
<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?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> </configuration>

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

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

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

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

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class _Test1SelectOne {
public static void main(String[] args) throws IOException {
//加载mybatis的xml文件(同时加载加载关联的映射文件)
//1.使用类加载器加载mybatis的配置文件
// InputStream config = _Test1SelectOne.class.getClassLoader().getResourceAsStream("conf.xml");
//2.使用mybatis的Resources类加载
Reader config = Resources.getResourceAsReader("conf.xml");
//创建sqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);
//创建sqlSession,执行mapper.xml中的sql语句
SqlSession sqlSession = sessionFactory.openSession();
//执行映射文件中的sql(namespace + select的id)
String sql = "com.mlxs.mybatis.test.userMapper.getUser";
User user = sqlSession.selectOne(sql, "1");//查询id=1
//关闭session
sqlSession.close();
System.out.println(user);
}
}

7.结果

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

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

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test; import com.mlxs.mybatis.util.MyBatisUtil; public class _Test2UserCrud { @Test
public void addUser(){
SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
SqlSession sqlSession = sessionFactory.openSession();
String statement = "com.mlxs.mybatis.test.userMapper.addUser";
int count = sqlSession.insert(statement, new User(0, "add1", 10));
sqlSession.commit();
sqlSession.close();
System.out.println("add count:"+count);
}
@Test
public void updateUser(){
SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
SqlSession sqlSession = sessionFactory.openSession();
String statement = "com.mlxs.mybatis.test.userMapper.updateUser";
int count = sqlSession.update(statement, new User(3, "update2", 100));
sqlSession.commit();
sqlSession.close();
System.out.println("update count:"+count);
}
@Test
public void delUser(){
SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
boolean autoCommit = true;//自动提交,不需手动commit
SqlSession sqlSession = sessionFactory.openSession(autoCommit);
String statement = "com.mlxs.mybatis.test.userMapper.deleteUser";
int count = sqlSession.delete(statement, 4);
sqlSession.close();
System.out.println("del count:"+count);
}
@Test
public void selectAll(){
SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();
boolean autoCommit = true;//自动提交,不需手动commit
SqlSession sqlSession = sessionFactory.openSession(autoCommit);
String statement = "com.mlxs.mybatis.test.userMapper.selectAllUsers";
List<User> userList = sqlSession.selectList(statement);
sqlSession.close();
System.out.println(userList);
}
}

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. innodb内部的并发线程

    1. innodb_thread_concurrency innodb有一系列的计数器来统计和控制内部的工作线程.其中最重要的一个是innodb_thread_concurrency,和它相关的inn ...

  2. mysql字段varchar区分大小写utf8_bin、utf8_general_ci编码区别

    mysql字段varchar区分大小写utf8_bin.utf8_general_ci编码区别 在mysql中存在着各种utf8编码格式:utf8_bin将字符串中的每一个字符用二进制数据存储,区分大 ...

  3. php原子操作,文件锁flock,数据库事务

    php原子操作,文件锁flock,数据库事务 php没有继承posix标准支持的unix锁,只封装了一个linux系统调用flock(信号量也能做成锁),按理也是可以使用锁机制的,虽然效率低一点.ph ...

  4. java中枚举类的使用详解

    /* * 通过JDK5提供的枚举来做枚举类 */ public enum Direction2 { FRONT("前"), BEHIND("后"), LEFT( ...

  5. Docker 端口映射问题解决

    在操作Docker容器时发现了其一个端口映射的BUG,具体表现为:开启容器时做了端口映射80:8080,即宿主机的80端口映射到容器内部的8080Jboss端口.一开始测试也没有什么问题,都可以联通, ...

  6. Word and MediaElement

    function jmc_new_lib(){// Because we still want the script to load but not the styleswp_enqueue_scri ...

  7. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

  8. Postgres-XL介绍

    一.什么是Postgres-XL XL的意思是:eXtensible Lattice,可以扩展的格子,即将PostgreSQL应用在多机器上的分布式数据库的形象化表达. Postgres-XL 是一个 ...

  9. Android Studio解决unspecified on project app resolves to an APK archive which is not supported

    出现该问题unspecified on project app resolves to an APK archive which is not supported as a compilation d ...

  10. c# UDP

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...