跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

MyBatis入门(一)---基本使用

一、MyBatis简介 1.1、概述 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以对配置和原生Map使用简单的 xml 或注解,将接口和 java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 1.2、ORM orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory  产生 session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 二、环境搭建 2.1、所需要Jar包 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。 2.2、建立数据库与插入数据 这里使用MySQL数据库:
CREATE TABLE `mybatis`.`user` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `name` VARCHAR(45) NOT NULL DEFAULT '无名氏' COMMENT '用户名', `age` TINYINT(3) NOT NULL DEFAULT 21 COMMENT '用户年龄', `birthday` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT '用户生日', `address` VARCHAR(256) NOT NULL DEFAULT '北京' COMMENT '用户地址', PRIMARY KEY (`id`) COMMENT '') COMMENT = '用户表';
insert into user(id,name,age,birthday,address)values(1,'张三',23,'1990-01-23 20:24:21','上海'),(2,'李四',18,'1986-12-23 12:13:11','广州'),(3,' 2.3、建立Web项目把Jar包引入项目 三、建立配置文件,实体类,与接口 3.1、建立实体类 /**  * @Title: User.java * @Package com.pb.mybatis.po * @Description: TODO(用户类) * @author 刘楠 * @date 2015-10-26 下午5:42:13 * @version V1.0 */package com.pb.mybatis.po;import java.util.Date;/** * @ClassName: User * @Description: TODO(用户类) * @author  刘楠 * @date 2015-10-26 下午5:42:13 * */public class User { /** * id(用户ID)     */ private int id;    /** * name(用户名)     */ private String name;    /** *age (用户年龄)     */ private int age;    /** * birthday(用户生日)     */ private Date birthday;    /** * address (用户地址)     */ private String address;    /** * @return the id     */ public int getId() {        return id; }    /** * @param id the id to set     */ public void setId(int id) {        this.id = id; }    /** * @return the name     */ public String getName() {        return name; }    /** * @param name the name to set     */ public void setName(String name) {        this.name = name; }    /** * @return the age     */ public int getAge() {        return age; }    /** * @param age the age to set     */ public void setAge(int age) {        this.age = age; }    /** * @return the brithday     */ public Date getBirthday() {        return brithday; }    /** * @param brithday the brithday to set     */ public void setBirthday(Date birthday) {        this.birthday = birthday; }    /** * @return the address     */ public String getAddress() {        return address; }    /** * @param address the address to set     */ public void setAddress(String address) {        this.address = address; } } 3.2、写实体类接口 /**  * @Title: UserMapper.java * @Package com.pb.mybatis.dao * @Description: TODO(用一句话描述该文件做什么) * @author 刘楠 * @date 2015-10-26 下午5:45:13 * @version V1.0 */package com.pb.mybatis.dao;import com.pb.mybatis.po.User;/** * @ClassName: UserMapper * @Description: TODO(用户类数据访问接口) * @author  刘楠 * @date 2015-10-26 下午5:45:13 * */public interface UserMapper {    /** * * @Title: selectUserById * @Description: TODO(根据用户ID查询) * @param id * @return User     */ public User selectUserById(int id); } 3.3、与db.properties db.properties #数据库基本配置 #驱动 driver=com.mysql.jdbc.Driver #连接url url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8#用户名 username=root #密码 passWord=root 3.4、建立映射文件与configuration.xml配置 UserMapper.xml configuration.xml 3.5、简单根据ID查询 /**  * @Title: Test1.java * @Package com.pb.mybatis.test * @Description: TODO(用一句话描述该文件做什么) * @author 刘楠 * @date 2015-10-26 下午5:55:54 * @version V1.0 */package com.pb.mybatis.test;import java.io.IOException;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;import com.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/** * @ClassName: Test1 * @Description: TODO(测试类) * @author  刘楠 * @date 2015-10-26 下午5:55:54 * */public class Test1 {    //Session工厂 static SqlSessionFactory sqlSessionFactory=null;    //Session static SqlSession session=null;    //字符流 static Reader reader=null; public static void main(String[] args) { selectById(); }    /** * * @Title: selectById * @Description: TODO(根据ID查找用户) void     */ public static void selectById(){        //加载配置文件 try { reader=Resources.getResourceAsReader("configuration.xml");            //建立SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);            //打开Session session=sqlSessionFactory.openSession();            //获取用户接口对象 UserMapper userMapper=session.getMapper(UserMapper.class);            //调用查询方法 User user=userMapper.selectUserById(1); System.out.println(user.getName()+"..."+user.getAge()+"..."+user.getBirthday().toLocaleString()+"..."+user.getAddress()); } catch (IOException e) { e.printStackTrace(); } } } 3.6、使用别名 更改mapper.xml中的User类的路径 为别名 测试类不变 3.7、使用resultMap 在mapper.xml中使用resultMap 测试类不变 四、实现基本的增、删、改、查 4.1、在接口中增加,模糊查询,添加,修改,删除的方法, /**  * @Title: UserMapper.java * @Package com.pb.mybatis.dao * @Description: TODO(用一句话描述该文件做什么) * @author 刘楠 * @date 2015-10-26 下午5:45:13 * @version V1.0 */package com.pb.mybatis.dao;import java.util.Date;import java.util.List;import com.pb.mybatis.po.User;/** * @ClassName: UserMapper * @Description: TODO(用户类数据访问接口) * @author  刘楠 * @date 2015-10-26 下午5:45:13 * */public interface UserMapper {    /** * * @Title: selectUserById * @Description: TODO(根据用户ID查询) * @param id * @return User     */ public User selectUserById(int id);    /** * * @Title: selectUserLikeName * @Description: TODO(根据姓名模糊查询) * @param name * @return List     */ public List selectUserLikeName(String name); /** * * @Title: addUser * @Description: TODO(添加用户) * @param user void     */ public void addUser(User user);    /** * * @Title: updateUser * @Description: TODO(修改用户) * @param user void     */ public void updateUser(User user);    /** * * @Title: deleteUser * @Description: TODO(删除用户) * @param id void     */ public void deleteUser(int id); } 4.2、在mapper.xml中增加相应的映射 insert into user(name,age,birthday,address) values(#{name},#{age},#{birthday},#{address})update user set name=#{name},age=#{age},birthday=#{birthday},address=#{address} where id=#{id}delete from user where id=#{id} 4.3、测试类 /** * @Title: Test1.java * @Package com.pb.mybatis.test * @Description: TODO(用一句话描述该文件做什么) * @author 刘楠 * @date 2015-10-26 下午5:55:54 * @version V1.0 */package com.pb.mybatis.test;import java.io.IOException;import java.io.Reader;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.pb.mybatis.dao.UserMapper;import com.pb.mybatis.po.User;/** * @ClassName: Test1 * * @Description: TODO(测试类) * * @author 刘楠 * * @date 2015-10-26 下午5:55:54 * * */public class Test1 {    // Session工厂 static SqlSessionFactory sqlSessionFactory = null;    // Session static SqlSession session = null;    // 字符流 static Reader reader = null;    public static void main(String[] args) { }    /** * * @Title: selectById * * @Description: TODO(根据ID查找用户) void     */ public static void selectById() {        // 加载配置文件 try { reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session session = sqlSessionFactory.openSession();            // 获取用户接口对象 UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法 User user = userMapper.selectUserById(1); System.out.println(user.getName() + "..." + user.getAge() + "..." + user.getBirthday().toLocaleString() + "..." + user.getAddress()); } catch (IOException e) { e.printStackTrace(); } }    /** * * @Title: selectLikeName * * @Description: TODO(根据用户名模糊查询) void     */ public static void selectLikeName() {        // 加载配置文件 try { reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session session = sqlSessionFactory.openSession();            // 获取用户接口对象 UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法 List users = userMapper.selectUserLikeName("张");            for (User user : users) { System.out.println(user.getName() + "..." + user.getAge()                        + "..." + user.getBirthday().toLocaleString() + "..." + user.getAddress()); } } catch (IOException e) { e.printStackTrace(); } }    /** * * @Title: addUser * @Description: TODO(添加用户) void     */ public static void addUser() {        // 加载配置文件 try { reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session session = sqlSessionFactory.openSession();            // 获取用户接口对象 UserMapper userMapper = session.getMapper(UserMapper.class);            // 声明新用户 User user =new User(); user.setName("呵呵"); user.setAge(22); String d="1984-09-23 20:23:22"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); Date date=sdf.parse(d); user.setBirthday(date); user.setAddress("不知道是哪的"); userMapper.addUser(user); System.out.println("插入后的ID"+user.getId());            //提交事务            session.commit(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) {            // TODO Auto-generated catch block            e.printStackTrace(); } }    /** * * @Title: updateUser * @Description: TODO(修改用户) void     */ public static void updateUser() {        // 加载配置文件 try { reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session session = sqlSessionFactory.openSession();            // 获取用户接口对象 UserMapper userMapper = session.getMapper(UserMapper.class);            // 调用查询方法 User user = userMapper.selectUserById(6); user.setName("想起 来叫什么了"); user.setAddress("魔都上海");            //更新            userMapper.updateUser(user);            //提交事务            session.commit(); } catch (IOException e) { e.printStackTrace(); } }    public static void detleUser() {        // 加载配置文件 try { reader = Resources.getResourceAsReader("configuration.xml");            // 建立SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 打开Session session = sqlSessionFactory.openSession();            // 获取用户接口对象 UserMapper userMapper = session.getMapper(UserMapper.class); //删除 userMapper.deleteUser(6);            //提交事务            session.commit(); } catch (IOException e) { e.printStackTrace(); } } 以上就是MyBatis入门(一)---基本使用的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关文章