国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Mybatis實現數據的增刪改查(CRUD)

2019-11-14 21:22:59
字體:
來源:轉載
供稿:網友
Mybatis實現數據的增刪改查(CRUD)

什么是 MyBatis?

MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。 MyBatis 消除了幾乎所有的 JDBC 代碼和參數的手工設置以及對結果集的檢索。MyBatis 可以使用簡單的xml 或注解用于配置和原始映射,將接口和 java 的 POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

MyBatis下載:https://github.com/mybatis/mybatis-3/releases

Mybatis實例

對一個User表的CRUD操作:

User表:

-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `userName` varchar(50) DEFAULT NULL,  `userAge` int(11) DEFAULT NULL,  `userAddress` varchar(200) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');INSERT INTO `user` VALUES ('2', 'test2', '22', 'suzhou');INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing');

在Src目錄下建一個mybatis的xml配置文件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>    <!-- mybatis別名定義 -->    <typeAliases>         <typeAlias alias="User" type="com.mybatis.test.User"/>     </typeAliases>     <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://127.0.0.1:3306/mybatis" />            <property name="username" value="root"/>            <property name="passWord" value="admin"/>            </dataSource>        </environment>    </environments>        <!-- mybatis的mapper文件,每個xml配置文件對應一個接口 -->    <mappers>        <mapper resource="com/mybatis/test/User.xml"/>    </mappers></configuration>

定義User mappers的User.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 namespace="com.mybatis.test.IUserOperation">    <!-- select語句 -->    <select id="selectUserByID" parameterType="int" resultType="User">        select * from `user` where user.id = #{id}    </select>        <!-- 定義的resultMap,可以解決類的屬性名和數據庫列名不一致的問題-->    <!-- <resultMap type="User" id="userResultMap">        <id property="id" column="user_id"  />        <result property="userName" column="user_userName"  />        <result property="userAge" column="user_userAge"  />        <result property="userAddress" column="user_userAddress"  />    </resultMap> -->        <!-- 返回list的select語句,注意 resultMap的值是指向前面定義好的 -->    <!-- <select id="selectUsersByName" parameterType="string" resultMap="userResultMap">        select * from user where user.userName = #{userName}    </select> -->        <select id="selectUsersByName" parameterType="string" resultType="User">        select * from user where user.userName = #{userName}    </select>        <!--執行增加操作的SQL語句。id和parameterType分別與IUserOperation接口中的addUser方法的名字和參數類型一致。    useGeneratedKeys設置為"true"表明要MyBatis獲取由數據庫自動生成的主鍵;keyProperty="id"指定把獲取到的主鍵值注入到User的id屬性-->     <insert id="addUser" parameterType="User"         useGeneratedKeys="true" keyProperty="id">         insert into user(userName,userAge,userAddress)               values(#{userName},#{userAge},#{userAddress})      </insert>        <update id="updateUser" parameterType="User" >        update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}    </update>        <delete id="deleteUser" parameterType="int">        delete from user where id=#{id}    </delete>    </mapper>

配置文件實現了接口和SQL語句的映射關系。selectUsersByName采用了2種方式實現,注釋掉的也是一種實現,采用resultMap可以把屬性和數據庫列名映射關系定義好,property為類的屬性,column是表的列名,也可以是表列名的別名!

User類的定義:

package com.mybatis.test;public class User {        private int id;    private String userName;    private int userAge;    private String userAddress;        public int getId() {        return id;    }        public void setId(int id) {        this.id = id;    }        public String getUserName() {        return userName;    }        public void setUserName(String userName) {        this.userName = userName;    }        public int getUserAge() {        return userAge;    }        public void setUserAge(int userAge) {        this.userAge = userAge;    }        public String getUserAddress() {        return userAddress;    }        public void setUserAddress(String userAddress) {        this.userAddress = userAddress;    }        @Override    public String toString(){        return this.userName+" "+this.userAge+" "+this.userAddress;    }}

IUserOperaton定義:

package com.mybatis.test;import java.util.List;public interface IUserOperation {        public User selectUserByID(int id);        public List<User> selectUsersByName(String userName);        public void addUser(User user);        public void updateUser(User user);        public void deleteUser(int id);    }

IUserOperation為操作接口,函數名和mybatis的xml配置文件中的操作id名對應。

測試類Test:

package com.mybatis.test;import java.io.Reader;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;public class Test {    private static SqlSessionFactory sqlSessionFactory;    private static Reader reader;    static {        try {            reader = Resources.getResourceAsReader("Configuration.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static SqlSessionFactory getSession() {        return sqlSessionFactory;    }    public void getUserByID(int userID) {        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation = session                    .getMapper(IUserOperation.class);            User user = userOperation.selectUserByID(userID);            if (user != null) {                System.out.println(user.getId() + ":" + user.getUserName()                        + ":" + user.getUserAddress());            }        } finally {            session.close();        }    }    public void getUserList(String userName) {        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation = session                    .getMapper(IUserOperation.class);            List<User> users = userOperation.selectUsersByName(userName);            for (User user : users) {                System.out.println(user.getId() + ":" + user.getUserName()                        + ":" + user.getUserAddress());            }        } finally {            session.close();        }    }    /**     * 增加后要commit     */    public void addUser() {        User user = new User();        user.setUserAddress("place");        user.setUserName("test_add");        user.setUserAge(30);        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation = session                    .getMapper(IUserOperation.class);            userOperation.addUser(user);            session.commit();            System.out.println("新增用戶ID:" + user.getId());        } finally {            session.close();        }    }    /**     * 修改后要commit     */    public void updateUser() {        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation = session                    .getMapper(IUserOperation.class);            User user = userOperation.selectUserByID(1);            if (user != null) {                user.setUserAddress("A new place");                userOperation.updateUser(user);                session.commit();            }        } finally {            session.close();        }    }    /**     * 刪除后要commit.     *      * @param id     */    public void deleteUser(int id) {        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation = session                    .getMapper(IUserOperation.class);            userOperation.deleteUser(id);            session.commit();        } finally {            session.close();        }    }    public static void main(String[] args) {        try {            Test test = new Test();            // test.getUserByID(1);            // test.getUserList("test1");            // test.addUser();            // test.updateUser();            // test.deleteUser(6);        } catch (Exception e) {            System.out.println(e.getMessage());        }    }}

代碼下載:http://download.csdn.net/detail/luxiaoxun/8056559

Source Code:https://github.com/luxiaoxun/MybatisDemo

參考:

MyBatis-3-User-Guide-zh

http://legend2011.blog.51cto.com/3018495/d-5

http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰来县| 大余县| 广西| 手机| 沭阳县| 固原市| 安丘市| 岳普湖县| 屏东县| 镶黄旗| 临安市| 塘沽区| 布拖县| 保靖县| 北流市| 凌源市| 富源县| 宣化县| 武清区| 巴彦县| 浠水县| 崇礼县| 泊头市| 永吉县| 抚顺县| 泗水县| 绿春县| 宜兰市| 游戏| 喀喇| 景洪市| 哈尔滨市| 太原市| 汝南县| 嵊州市| 宁强县| 密山市| 扬中市| 崇义县| 平度市| 广宗县|