1. 程式人生 > 其它 >mybatis基於代理dao的CRUD操作

mybatis基於代理dao的CRUD操作

技術標籤:mybatismybatis代理模式

mybatis基於代理dao的CRUD操作

​ 建立mybatis的環境在上一篇就不再寫了,資料庫等也在上一篇

1 建立pojo 的user表

public class User implements Serializable {
        private Integer id;
        private  String username;
        private Date birthday;
        private String sex;
        private String address;

    @Override
public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='"
+ address + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username =
username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }

2 建立userdao介面

public interface UserDao {
    /**
     *  查詢所有操作
     */
    List<User> findAll();

    /**
     * 儲存使用者
     * @param user
     */
    void saveUser(User user);

    /**
     * 更新使用者
     * @param user
     */
    void  updateUser(User user );

    /**
     * 刪除使用者
     * @param user
     */
    void deleteUser(int user);

    /**
     * 根據id查詢
     * @param id
     * @return
     */
    User findById(int id);

    /**
     * 根據名字模糊查詢
     * @param username
     * @return
     */
    List<User> findByName(String username);

    /**
     * 查詢總使用者數
      * @return
     */
    int findTotal();
}

3 建立SqlMapConfig.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>
    <!--配合別名  只能配置pojo內的 -->
        <typeAliases>
            <!--type指定的實體類全限定類名 alias屬性指定別名 當指定了別名就不再區分大小寫
            <typeAlias type="com.jty.pojo.User" alias="user"></typeAlias>
            -->
           <!-- 用於指定配置別名的包, 當指定後,該包下的實體類都會註冊別名,並且類名就是別名,也不區分大小寫-->
            <package name="com.jty.pojo"/><package name=""/>
        </typeAliases>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <!-- 配置連線池 -->
            <dataSource type="POOLED">

                <!-- 配置連線資料庫的四個基本資訊-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>


            </dataSource>
        </environment>
    </environments>
        <mappers>
            <!-- 用於指定dao介面所在的包 當指定後便不需要再寫mapper resource 或者 class了
             <mapper resource="com/jty/dao/UserDao.xml" />
            -->
            <package name="com.jty.dao"/>

        </mappers>

</configuration>

4 建立userdao.xml 用於處理class中的介面

<?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.jty.dao.UserDao">

    <!-- 配置查詢所有   resultType 將查詢結果封裝到user物件中-->
        <select id="findAll" resultType="User">
                select * from user
        </select>
    <!--儲存使用者 -->
        <insert id="saveUser" parameterType="User">
         insert into user(username,address,sex,birthday) value(#{username},#{address},#{sex},#{birthday});
        </insert>
    <!--更新使用者 -->
        <update id="updateUser" parameterType="User">
            update  user set username =#{username},address =#{address},sex =#{sex},birthday=#{birthday}where id=#{id}
        </update>
    <!--刪除使用者 -->
        <delete id="deleteUser" parameterType="User">
            delete from user where id = #{id};
        </delete>
    <!--查詢使用者 -->
        <select id="findById" resultType="User" >
            select * from user where id = #{id}
        </select>
    <!--根據名稱模糊查詢使用者 -->
        <select id="findByName" parameterType="string" resultType="User" >
            select * from user where username like #{name}
        </select>
    <!--查詢使用者的總記錄條數 -->
        <select id="findTotal"  resultType="int" >
           select count(id) from  user
        </select>
</mapper>

5 建立測試類進行測試

public class MybatisTest {
    /**
     * @param args
     */
    private InputStream in;
    private SqlSession session;
    private UserDao userDao;

    @Before
    public void init() throws IOException {
        //1 讀取配置檔案 resources 的包應為import org.apache.ibatis.io.Resources;
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2 建立SqlSessionFactory工廠
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3 使用工廠生產SqlSession物件
        session = factory.openSession();
        //4 使用SqlSession建立Dao介面的代理物件
        userDao = session.getMapper(UserDao.class);
    }
    @After
    public void destory() throws IOException {
        session.commit();
        session.close();
        in.close();
    }
    /**
     * 查詢所有
     */
    @Test
    public void testfindAll() {
        //5 使用代理物件執行方法
        List<User> users = userDao.findAll();
        for (User user : users
        ) {
            System.out.println(user);
        }
    }
    /**
     * 插入資料
     */

    @Test
    public void testSave() {
        User user = new User();
        user.setUsername("狗子");
        user.setAddress("日本");
        user.setSex("男");
        user.setBirthday(new Date());
        //5 執行儲存方法
        userDao.saveUser(user);
    }
    /**
     * 更新資料
     */
    @Test
    public void testUpdate() {
        User user = new User();
        user.setId(43);
        user.setUsername("魏無忌");
        user.setAddress("美國");
        user.setSex("男");
        user.setBirthday(new Date());
        //5 執行儲存方法
        userDao.updateUser(user);
    }

    /**
     * 刪除使用者
     */
    @Test
    public void testDelete() {
        userDao.deleteUser(48);
    }
    /**
     * 根據id查詢
     */
    @Test
    public void testFindById() {
      User user = userDao.findById(49);
        System.out.println(user);
    }
    /**
     * 模糊查詢
     */
    @Test
    public void testFindByName() {
        List<User> users = userDao.findByName("%孫%");
        for (User user:users
             ) {
            System.out.println(user);
        }
    }
    /**
     * 查詢記錄總條數
     */
    @Test
    public void testFindTotal() {
        int count = userDao.findTotal();
        System.out.println(count);
    }
}

例:

在這裡插入圖片描述在這裡插入圖片描述