天天看點

MyBatis架構@純注解方式對資料庫的操作

1.項目pom.xml [導入依賴] 

<!--mybatis架構-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!--連接配接資料庫驅動包-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.44</version>
    </dependency>
           

2.實體類User 中屬性: uid,uname,upwd

3.項目的 MyBatis.xml 配置檔案  

         位置: Resources檔案夾下,項目啟動自動運作加載該檔案

         功能: * 連接配接資料庫,* 配置實體類路徑[權限定:包名+類名]   

<?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>

    <environments default="development">
        <environment id="development">
            <!--事務: 原始的jdbc模式    需要自動 送出  -->
            <transactionManager type="JDBC"/>
            <!--配置連接配接資料庫資訊-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/water?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置實體類的  映射檔案-->
    <mappers>
        <mapper class="com.zzw.mapper.UserMapper"></mapper>
    </mappers>


</configuration>
           

 4. UserMapper接口類    [接口類一旦寫完,需去mybatis.xml中配置]

package com.zzw.mapper;

import com.zzw.model.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {

    //注解式開發

    //查詢所有資訊
    @Select("select * from User")
    @Results({
            @Result(property = "uid",column = "uid",id=true),
                @Result(property = "uname",column = "uname"),
                @Result(property = "upwd",column = "upwd")
    })
    public List<User> findAllUser();


    //增加
    @Insert("insert into User(uname,upwd)values(#{uname},#{upwd})")
    @Results({
            @Result(property = "uid" ,column = "uid",id=true),
            @Result(property = "uname" ),
            @Result(property = "upwd")
    })
    public void addUser(User u);


    //修改
    @Update("update User set uname=#{uname},upwd=#{upwd} where uid=#{uid}")
    public int updateUserById(User user);

    //删除
    @Delete("delete from User where uid=#{uid}")
    public int deleteById(int uid);



}
           

5.測試類       [加載MyBatis.xml檔案,測試]

package com.zzw.test;

import com.zzw.mapper.UserMapper;
import com.zzw.model.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

public class UserTest {

    private  SqlSession sqlSession;

    @Before
    public void before(){
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(this.getClass().getClassLoader().getResourceAsStream("mybatis.xml"));
        sqlSession=sqlSessionFactory.openSession();
    }

    @Test
    public void test(){
        UserMapper um=sqlSession.getMapper(UserMapper.class);

        //查詢
        List<User> users=um.findAllUser();
        for (User u : users) {
            System.out.println(u.getUid() + "\t" + u.getUname() + "\t" + u.getUpwd());
        }

        //增加
        User uu=new User("霞飛","321qwe");
        um.addUser(uu);

       //修改
        User u=new User(7,"張國榮","80");
        int n=um.updateUserById(u);
        System.out.println(n+"受影響");

       //删除
        int i=um.deleteById(3);
        System.out.println(i+"受影響");
        
        //送出
        sqlSession.commit();


    }


}
           

最後解釋以下代碼:

第一種
@Select("select * from User")  
@Results({    
        @Result(property = "uid",column = "uid",id=true),
            @Result(property = "uname",column = "uname"),
            @Result(property = "upwd",column = "upwd")
})
public List<User> findAllUser();

//1行:@Select 辨別你底下方法要做查詢 ,括号中填寫查詢語句
//2行:類似于以前實體配置檔案中的屬性
//3,4,5行 中填寫你實體類屬性  property:實體類屬性    column:資料庫字段名
//7行 查詢的方法

第二種 可省略其中@Results,但必須字段名是一張表中的,若有不同的,則需要手動如第一種 配置。。。
@Select("select * from User")  
public List<User> findAllUser();
           

總結:使用純注解方式,不再去寫實體類配置檔案,需注意的是在mybatis.xml檔案中,

            * 配置實體類配置檔案路徑:<mapper resource="com/zzw/model/Province.xml"></mapper>

             * 注解方式(這裡使用的):<mapper class="com.zzw.mapper.UserMapper"></mapper>

                                                                     堅信:一分耕耘,一份收獲!