亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 15:18:06
字體:
來源:轉載
供稿:網友

一、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,'張五',33,'1975-09-23 02:13:11','上海'),(4,'王六',27,'1984-11-01 11:23:14','重慶'),(5,'張三豐',108,'1971-01-02 02:12:11','武當');

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#連接urlurl=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8#用戶名username=root#密碼passWord=root

3.4、建立映射文件與configuration.xml配置

 

 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命名空間要寫接口的全路徑  --><mapper namespace="com.pb.mybatis.dao.UserMapper"><!--ID要與接口中的方法名相同   parameterType傳入的參數類型 resultType 返回的類型這里也User類的全路徑--><select id="selectUserById" parameterType="int" resultType="com.pb.mybatis.po.User">select * from userwhere id=#{id}</select></mapper>

 

configuration.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><!-- 加載資源文件 --><properties resource="db.properties"/><!--配置環境  --><environments default="development"><environment id="development"><!--事務管理  --><transactionManager type="JDBC"/><!--數據源 通過Properties加載配置 --><dataSource type="POOLED"><!--驅動driver  --><property name="driver" value="${driver}"/><!--連接URL  --><property name="url" value="${url}"/><!--用戶名  --><property name="username" value="${username}"/><!--密碼  --><property name="password" value="${password}"/></dataSource></environment></environments><!--建立映射  --><mappers><mapper resource="com/pb/mybatis/dao/UserMapper.xml"/></mappers></configuration>

 

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、使用別名

 

<!--使用別名  --><typeAliases><!--用戶類別名  --><typeAlias type="com.pb.mybatis.po.User" alias="User"/></typeAliases>

更改mapper.xml中的User類的路徑 為別名

<?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命名空間要寫接口的全路徑  --><mapper namespace="com.pb.mybatis.dao.UserMapper"><!--ID要與接口中的方法名相同   parameterType傳入的參數類型 resultType 返回的類型這里也User類的全路徑--><select id="selectUserById" parameterType="int" resultType="User">select * from userwhere id=#{id}</select></mapper>

測試類不變

3.7、使用resultMap

在mapper.xml中使用resultMap

 

<?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命名空間要寫接口的全路徑  --><mapper namespace="com.pb.mybatis.dao.UserMapper"><!--結果映射 不區另大小寫,建議數據庫的列寫為大寫  --><resultMap type="User" id="userMap"><!--主鍵  --><id property="id" column="ID"/><!--姓名  --><id property="name" column="NAME"/><!--年齡  --><id property="age" column="AGE"/><!--生日  --><id property="birthday" column="BIRTHDAY"/><!--地址  --><id property="address" column="ADDRESS"/></resultMap><!--ID要與接口中的方法名相同   parameterType傳入的參數類型 resultType 返回的類型這里也User類的全路徑或者類的別名,  resultMap寫已經有的映射2都只能同時有一個--><select id="selectUserById" parameterType="int" resultMap="userMap">select * from userwhere id=#{id}</select></mapper>

 

測試類不變

 

 

 

四、實現基本的增、刪、改、查

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<User>     */    public List<User> 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中增加相應的映射

 

<?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命名空間要寫接口的全路徑  --><mapper namespace="com.pb.mybatis.dao.UserMapper"><!--結果映射 不區另大小寫,建議數據庫的列寫為大寫  --><resultMap type="User" id="userMap"><!--主鍵  --><id property="id" column="ID"/><!--姓名  --><id property="name" column="NAME"/><!--年齡  --><id property="age" column="AGE"/><!--生日  --><id property="birthday" column="BIRTHDAY"/><!--地址  --><id property="address" column="ADDRESS"/></resultMap><!--ID要與接口中的方法名相同   parameterType傳入的參數類型 resultType 返回的類型這里也User類的全路徑或者類的別名,  resultMap寫已經有的映射2都只能同時有一個--><select id="selectUserById" parameterType="int" resultMap="userMap">select * from userwhere id=#{id}</select><!--根據姓名模糊查詢  --><select id="selectUserLikeName" parameterType="String" resultMap="userMap">select * from userwhere name like "%"#{name}"%"</select><!--添加用戶  useGeneratedKeys使用數據的增序列 keyProperty將增加后的用戶ID返回--><insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">insert into user(name,age,birthday,address)values(#{name},#{age},#{birthday},#{address})</insert><!--修改更新  --><update id="updateUser" parameterType="User">update user set name=#{name},age=#{age},birthday=#{birthday},address=#{address}where id=#{id}</update><!--刪除  --><delete id="deleteUser" parameterType="int">delete from userwhere id=#{id}</delete></mapper>

 

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<User> 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();        }    }}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品美女| 97免费视频在线播放| 欧美高跟鞋交xxxxxhd| 91精品国产91久久久久久最新| 色偷偷偷亚洲综合网另类| 国产精品黄页免费高清在线观看| 日韩一区二区av| 91精品国产综合久久久久久久久| 欧美在线视频一区二区| 亚洲第一页中文字幕| 97视频在线观看播放| 国产成人精品av| 久久久久免费视频| 国产精品久久久久免费a∨| 91国产精品视频在线| 992tv成人免费影院| 性欧美xxxx| 成人观看高清在线观看免费| 国产在线精品一区免费香蕉| 久久久久久亚洲| 国产精品国产三级国产专播精品人| 日韩美女在线播放| 久久精品视频中文字幕| 狠狠色狠狠色综合日日小说| 亚洲美女在线观看| 欧美成人激情图片网| 欧美日韩视频在线| 亚洲va国产va天堂va久久| 国产精品视频地址| 亚洲电影免费观看高清完整版在线观看| 亚洲精品xxxx| 国产成人av在线播放| 成人欧美在线观看| 17婷婷久久www| 国产日韩欧美中文| 青青在线视频一区二区三区| 国产一区二区三区直播精品电影| 日本高清不卡在线| 亚洲精品国产精品久久清纯直播| 成人中心免费视频| 欧美日韩成人精品| 欧美自拍视频在线| 精品国产精品自拍| 精品国产乱码久久久久酒店| 亚洲日本欧美中文幕| 欧美肥臀大乳一区二区免费视频| 欧美亚洲第一页| 欧美性猛交xxxx免费看| 欧美大片在线看免费观看| 国产日韩欧美日韩| 久久大大胆人体| 九九久久久久久久久激情| 亚洲а∨天堂久久精品9966| 亚洲成色777777女色窝| 亚洲欧洲美洲在线综合| 97久久超碰福利国产精品…| 亚洲女人天堂av| 永久免费精品影视网站| 精品中文字幕在线观看| 美女福利视频一区| 国产欧美日韩最新| 国产精品啪视频| 久久精品这里热有精品| 国产精品精品视频一区二区三区| 国产成人欧美在线观看| 国内免费精品永久在线视频| 亚洲爱爱爱爱爱| 国产成人一区二| 神马久久久久久| 欧美午夜激情视频| 午夜精品久久久久久久99热浪潮| 国产精品91在线| 亚洲成人av片在线观看| 91禁外国网站| 黑人巨大精品欧美一区二区三区| 国产在线精品播放| 福利二区91精品bt7086| 国产精品第一页在线| 欧美在线日韩在线| 97视频免费在线看| 一区二区三区视频在线| 亚洲最大激情中文字幕| 亚洲www在线| 亚洲精品国产综合久久| 精品小视频在线| 欧美日韩国产丝袜另类| 国产精品www色诱视频| 亚洲国产小视频| 欧美日本国产在线| 亚洲人成77777在线观看网| 日韩精品免费综合视频在线播放| 久久久久久一区二区三区| 国产不卡一区二区在线播放| 国产精品久久久久av免费| 亚洲天堂久久av| 亚洲精品国精品久久99热| 国产精品日韩av| 午夜精品视频网站| 久久人91精品久久久久久不卡| 国产精品国产三级国产专播精品人| 国产午夜精品美女视频明星a级| 欧美成人精品不卡视频在线观看| 国产精品午夜一区二区欲梦| 成人中文字幕+乱码+中文字幕| 九九精品在线观看| 国产成人一区二区三区小说| 亚洲第一网中文字幕| 疯狂蹂躏欧美一区二区精品| 性色av一区二区三区红粉影视| 亚洲国产欧美日韩精品| 人妖精品videosex性欧美| 91色p视频在线| 国产精品高清免费在线观看| 4438全国成人免费| 欧美精品videossex88| 亚洲国产精品久久久| 欧美视频不卡中文| 国产精品久久久久久五月尺| 亚洲一区二区三区香蕉| 欧美激情精品在线| 国产精品视频男人的天堂| 91久久久久久久久| 欧美专区中文字幕| 久久久精品国产一区二区| 日韩黄色在线免费观看| 国产美女直播视频一区| 欧美网站在线观看| 亚洲 日韩 国产第一| 欧美高清视频在线| 亚洲自拍偷拍福利| 欧美激情一区二区三级高清视频| 911国产网站尤物在线观看| 91夜夜揉人人捏人人添红杏| 性欧美办公室18xxxxhd| 91精品久久久久久久久| yw.139尤物在线精品视频| 久久精品国产欧美激情| 欧美电影在线播放| xxxxx成人.com| 精品成人乱色一区二区| 欧美激情免费视频| 国产有码一区二区| 国产精品综合网站| 欧美日韩美女在线| 97成人精品视频在线观看| 91av中文字幕| 高跟丝袜一区二区三区| 中文字幕精品视频| 91成人在线视频| 国产成人avxxxxx在线看| 97香蕉久久夜色精品国产| 欧美性一区二区三区| 国产97色在线| 国产香蕉精品视频一区二区三区| 国产日韩在线观看av| 久久久久久999| 欧美极品少妇与黑人| 色yeye香蕉凹凸一区二区av| 96pao国产成视频永久免费| 欧美成人sm免费视频| 欧美一乱一性一交一视频| 亚洲欧美中文日韩在线| 国产午夜精品视频| 国产91在线播放精品91|