mybatis curd

来源:互联网 发布:mac和安卓手机传文件 编辑:程序博客网 时间:2024/05/16 09:41
-- ------------------------------ 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());        }    }}
复制代码
0 0
原创粉丝点击