JAVA--高級開發--Mybatis框架

<------Mybatis框架------->
import com.model.QuerVo;
import com.model.User;
import com.model.VOUser;
import java.util.List;
//編寫持久層IUserDao接口
public interface IUserDao {
    //查詢全部的信息
    public List<User> findAll();
    //根據id去查詢
    public User finId(Integer  id);
    //添加信息:也就是保存信息
    public int  insert(User user);
    //修改信息
    public int update(User  user);
    //刪除學員的信息
    public int delete(Integer stuId);
    //模糊查詢
    public List<User> findName(String username);
    //聚合函數查詢總記錄數
    public int totalcont();
    //使用sum計算年齡的和
    public int agesum();
    //使用聚合函數計算出最大值max
    public int max();
    //使用聚合函數計算出最小值min
    public int min();
    //使用聚合函數計算出平均值avg
    public int  avg();
    //傳遞的參數是包裝類對象
    public List<User>findQuery(QuerVo  querVo);
    //查詢全部的信息:  //實體類的屬性和表中的不同
    public List<VOUser> finaAlll();
}
//標準的javaBean User實體類
package com.model;
import java.io.Serializable;
//編寫User實體類
public class User implements Serializable {
    private static final long serialVersionUID = -8603850515164057242L;
    private Integer id;
    private String  username;
    private String age;
    private String  address;
    public User(){

    }
    public User(Integer id, String username, String age, String address) {
        this.id = id;
        this.username = username;
        this.age = age;
        this.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 String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", age='" + age + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

Resources配置文件
<?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.bdit.IUserDao">
     <!--查詢全部的操做-->
    <select id="findAll" resultType="com.bdit.model.User">
        select * from user
    </select>
   <!--根據id去查詢-->
    <select id="finId" resultType="com.bdit.model.User" parameterType="int">
        select  *  from user where id=#{id}
    </select>
   <!--保存信息-->
    <insert id="insert" parameterType="com.com.bdit.model.User">
        <!--獲取新增用戶的id-->
        <selectKey keyColumn="id" keyProperty="id" resultType="int">
            select  last_insert_id();
        </selectKey>
        insert  into user(username,age,address)values(#{username},#{age},#{address})
    </insert>

    <!--修改信息-->
    <update id="update" parameterType="com.com.bdit.model.User">
        update user set username=#{username},age=#{age},address=#{address} where id=#{id}
    </update>

    <!--刪除信息:根據用戶的id去刪除-->
    <delete id="delete" parameterType="com.com.bdit.model.User">
        delete  from user where id=#{id}
    </delete>

    <!--模糊查詢-->
   <select id="findName" parameterType="java.lang.String" resultType="com.com.bdit.model.User">
       select * from user  where username like '%${value}%'
   </select>

    <!--使用聚合函數查詢表中的總記錄數-->
    <select id="totalcont"  resultType="java.lang.Integer">
        select  count(id) from user
    </select>

    <!--sum年齡的總和-->
    <select id="agesum" resultType="java.lang.Integer">
        select  sum(age) from user;
    </select>
    <!--計算出年齡最大值-->
    <select id="max" resultType="java.lang.Integer">
        select max(age) from user;
    </select>
    <!--計算出最小值-->
    <select id="min" resultType="java.lang.Integer">
        select min(age) from user
    </select>
    <!--計算出平均值-->
    <select id="avg" resultType="java.lang.Integer">
        select  avg(age) from user
    </select>
   <!--傳遞的對象是包裝類的對象-->
    <select id="findQuery" resultType="com.com.bdit.model.User" parameterType="com.model.QuerVo">
        select  *  from  user where username  like #{user.username}
    </select>
    <!---實體類的屬性和表中的不同時,是查詢不到結果的:-->
<!--    <select id="finaAlll" resultType="com.model.VOUser">-->
<!--     select  *  from user-->
<!--    </select>-->
    <!--解決辦法:使用別名查詢:方法 1 -->
<!--    <select id="finaAlll" resultType="com.model.VOUser">-->
<!--        select id as stuId, username as username ,age as stuage, address as stuaddress from user-->
<!--    </select>-->

    <!---實體類的屬性和表中的不同時:解決方法 2
    type屬性:指定實體類的全限定名
    id屬性:給一個惟一的標識,是給查詢select標籤引用的
    id標籤:用於指定主鍵的字段
    result標籤:用於指定非主鍵字段
    property屬性;用於指定實體類的屬性字段
    -->
    <select id="finaAlll" resultMap="Map">
        select  *  from  user
    </select>
    <resultMap id="Map" type="com.model.VOUser">
    <id column="id"  property="stuId"/>
    <result column="username" property="username"/>
    <result column="age" property="stuage"/>
    <result column="address" property="stuaddress"/>
    </resultMap>
</mapper>

SqlMapConfig配置文件java

<?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的環境-->
    <environments default="mysql">
        <!--配置mysql的環境-->
        <environment id="mysql">
            <!--配置事物的類型-->
            <transactionManager type="JDBC"/>
            <!--配置鏈接數據庫的信息,用的數據源是(鏈接池)-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ab_wzy?serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--告知mybatis映射文件的位置-->
    <!--SQL映射文件mybatis是不認識的,全部須要告知-->
    <mappers>
        <!--查詢全部的方法-->
        <mapper resource="com/dao/IUserDao.xml"/>
        <!--基於註解的方式-->
       <!--<mapper class="com.bdit.IUserDao"/>-->
    </mappers>
</configuration>

編寫Mybatis的測試類mysql

package com.bdit;

        import com.model.QuerVo;
        import com.model.User;
        import com.model.VOUser;
        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 org.junit.After;
        import org.junit.Before;
        import org.junit.Test;

        import java.io.IOException;
        import java.io.InputStream;
        import java.util.List;

//編寫Mybatis測試類
public class mybatisTest2 {
    private InputStream input;
    private  SqlSessionFactoryBuilder builder;
    private SqlSessionFactory factory;
    private SqlSession session;
    private IUserDao userDao;

    @Test //查詢全部的信息
    public  void findAll(){
        List<User>list=userDao.findAll();
        for(User  user:list){
            System.out.println(user);
        }
    }
    @Test //根據id去查詢
    public  void findId(){
        User  user=userDao.finId(2);
        System.out.println(user);
    }
    @Test //添加信息:保存
    public void insert(){
        User  user=new User();
        user.setUsername("劉備");
        user.setAge("37");
        user.setAddress("三國");
        int  i=userDao.insert(user);
        if(i>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失敗");
        }
        System.out.println("獲取新增用戶的id"+user.getId());
    }
    //修改學員的信息
    @Test
    public  void  update(){
        User user=userDao.finId(6);
        user.setUsername("關羽");
        user.setAge("23");
        user.setAddress("三國");
        int i=userDao.update(user);
        if(i>0){
            System.out.println("修改爲功");
        }else{
            System.out.println("修改失敗");
        }
    }
    //刪除學員的信息
    @Test
    public  void  delete(){
        int  i=userDao.delete(7);
        if(i>0){
            System.out.println("刪除成功");
        }else{
            System.out.println("刪除失敗");
        }
    }
    //模糊查詢
    @Test
    public void findName(){
        List<User>list=userDao.findName("wen");
        for(User user:list){
            System.out.println(user);
        }
    }
    //使用聚合函數查詢表中的總記錄數
    @Test
    public void totalcount(){
        int  i=userDao.totalcont();
        System.out.println("總記錄數"+i);
    }
    //使用聚合函數計算年齡的總和
    @Test
    public void agesum(){
        int  i=userDao.agesum();
        System.out.println("年齡的總和"+i);
    }
    //使用聚合函數計算出年齡最大值
    @Test
    public  void max(){
        int  i=userDao.max();
        System.out.println("年齡最大的"+i);
    }
    //使用聚合函數就算出年齡最小值
    @Test
    public void min(){
        int  i=userDao.min();
        System.out.println("年齡最小的"+i);
    }
    //使用聚合函數計算出年齡平均值
    @Test
    public void  avg(){
        int i=userDao.avg();
        System.out.println("平均年齡"+i);
    }
    //傳遞的類型是包裝類時
    @Test
    public void findQuery(){
        QuerVo  querVo=new QuerVo();
        User  user=new User();
        user.setUsername("%李%");
        querVo.setUser(user);
        List<User>list=userDao.findQuery(querVo);
        for(User  user1:list){
            System.out.println(user1);
        }
    }
    //實體類的屬性和表中的不同
    @Test
    public  void finaAlll(){
        VOUser voUser=new VOUser();
        List<VOUser>list=userDao.finaAlll();
        for(VOUser user1:list){
            System.out.println(user1);
        }
    }
    @Before //封裝好的數據,初始化時加載
    public void init()throws IOException {
        //1 、 讀取配置文件-->SqlMapConfig核心的配置文件
        input = Resources.getResourceAsStream("SqlMapConfig.xml");
        //二、建立SqlSessionFactoryBuilder構建者的對象。
        builder = new SqlSessionFactoryBuilder();
        // 三、使用構建者對象建立工廠對象:SqlSessionFactory
        factory = builder.build(input);
        //四、使用SqlSessionFactory對象建立SqlSession對象
        session = factory.openSession();
        //五、使用SqlSession對象建立Dao接口的代理對象
        userDao = session.getMapper(IUserDao.class);
    }
    @After
    public  void  destory()throws IOException {
        //提交事務
        session.commit();
        //關閉釋放資源
        session.close();
        input.close();
    }

}
相關文章
相關標籤/搜索