发表于: 2018-03-23 20:44:23

1 652


小白学java第十天,今天学习时间4-5小时



今天完成的事情:(今天首先完成了Mysbatis,

首先创建mysql驱动配置文件

然后创建mybatis配置文件

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

    

    <!-- 加载java的配置文件,如db.properties -->  

    <properties resource="mysql.properties"></properties>  

    <!-- 省却包名 -->  

    <typeAliases>  

         <package name="com.mybatis.beans"/>

    </typeAliases>  

    

    <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->    

     <environments default="cybatis">

        <environment id="cybatis">  

            <!-- 配置JDBC事务控制,由mybatis进行管理 -->    

            <transactionManager type="JDBC"></transactionManager>    

            <!-- 配置数据源,采用mybatis连接池 -->    

            <dataSource type="POOLED">    

                <property name="driver" value="${driver}" />    

                <property name="url" value="${url}" />    

                <property name="username" value="${username}" />    

                <property name="password" value="${password}" />    

            </dataSource>    

        </environment>    

    </environments>

    

    <!-- 加载映射文件 -->    

    <mappers>      

        <package name="com/mybatis/mapper"/> 

    </mappers>    

     

</configuration>  

创建对应实体对象

package com.mybatis.beans;

 

 import java.io.Serializable;

 

 public class UserBean implements Serializable{

 

     private static final long serialVersionUID = 1L;

     private Integer id;

     private String username;

     private String password;

     private Double age;

     

     public UserBean() {

         super();

     }

     

     public UserBean(String username, String password, Double age) {

         super();

         this.username = username;

         this.password = password;

         this.age = age;

     }

 

     public UserBean(Integer id, String username, String password, Double age) {

         super();

         this.id = id;

         this.username = username;

         this.password = password;

         this.age = age;

     }

 

     public Integer getId() {

         return id;

     }

 

     public void setId(Integer id) {

         this.id = id;

     }

 

     public String getUsername() {

         return username;

     }

 

     public void setUsername(String name) {

         this.username = name;

     }

 

     public String getPassword() {

         return password;

     }

 

     public void setPassword(String password) {

         this.password = password;

     }

 

     public Double getAccount() {

         return age;

     }

 

     public void setAccount(Double age) {

         this.age = age;

     }

 

     @Override

     public String toString() {

         return "UserBean [id=" + id + ", username=" + username + ", password="

                 + password + ", age=" + age + "]";

     }

 }     

常见接口mapper和定义操作表的映射文件mapper.xml

package com.mybatis.mapper;

import java.util.List;

import com.mybatis.beans.UserBean;

public interface UserMapper {

    /**

     * 新增用戶

     * @param user

     * @return

     * @throws Exception

     */

    public int insertUser(UserBean user) throws Exception;

    /**

     * 修改用戶

     * @param user

     * @param id

     * @return

     * @throws Exception

     */

    public int updateUser (UserBean user,int id) throws Exception;

     /**

      * 刪除用戶

      * @param id

      * @return

      * @throws Exception

      */

    public int deleteUser(int id) throws Exception;

    /**

     * 根据id查询用户信息

     * @param id

     * @return

     * @throws Exception

     */

    public UserBean selectUserById(int id) throws Exception;

     /**

      * 查询所有的用户信息

      * @return

      * @throws Exception

      */

    public List<UserBean> selectAllUser() throws Exception;

}

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mybatis.mapper.UserMapper">

<!-- 自定义返回结果集 -->

   <resultMap id="userMap" type="UserBean">

        <id property="id" column="id" javaType="java.lang.Integer"></id>

        <result property="username" column="username" javaType="java.lang.String"></result>

        <result property="password" column="password" javaType="java.lang.String"></result>

        <result property="account" column="account" javaType="java.lang.Double"></result>

    </resultMap>


    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">

        insert into user (username,password,age) values (#{username},#{password},#{age})

    </insert>

    

    <update id="updateUser" >

      update user set username=#{username},password=#{password},age=#{age} where id=#{id}

    </update>

    

    <delete id="deleteUser" parameterType="int">

     delete from user where id=#{id}  

    </delete>

    

    <select id="selectUserById" parameterType="int" resultMap="userMap">

     select * from user where id=#{id}

    </select>

    

    <select id="selectAllUser" resultMap="userMap">

     select * from user

    </select>

</mapper>

创建工具类

package com.mybatis.tools;

import java.io.Reader;

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 DBTools {

    public static SqlSessionFactory sessionFactory;

    

    static{

        try {

            //使用MyBatis提供的Resources类加载mybatis的配置文件

            Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");

            //构建sqlSession的工厂

            sessionFactory = new SqlSessionFactoryBuilder().build(reader);

        } catch (Exception e) {

            e.printStackTrace();

        }

        

    }

    //创建能执行映射文件中sql的sqlSession

    public static SqlSession getSession(){

        return sessionFactory.openSession();

    }

    

}

最后写测试

package com.mybatis.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.mybatis.beans.UserBean;

import com.mybatis.mapper.UserMapper;

import com.mybatis.tools.DBTools;

public class UserService {

    private static Logger logger = LoggerFactory.getLogger(UserService.class); 

    public static void main(String[] args) {

        insertUser();

        //deleteUser(1);

        //selectUserById(2);

        //selectAllUser();

    }

    

    /**

     * 新增用户

     */

    private static boolean  insertUser(){

        SqlSession session = DBTools.getSession();

        UserMapper mapper = session.getMapper(UserMapper.class);

        UserBean user = new UserBean("张飞", "5201314", 998.0);

        try {

            int index=mapper.insertUser(user);

            boolean bool=index>0?true:false;

            logger.error("新增用户user对象:{},操作状态:{}",new Object[]{user,bool});

             session.commit();

             return bool;

        } catch (Exception e) {

            e.printStackTrace();

            session.rollback();

            return false;

        }finally{

            session.close();

        }

    }

    

    

    /**

     * 删除用户

     * @param id 用户ID

     */

    private static boolean deleteUser(int id){

        SqlSession session=DBTools.getSession();

        UserMapper mapper=session.getMapper(UserMapper.class);

        try {

            int index=mapper.deleteUser(id); 

            boolean bool=index>0?true:false;

            logger.debug("根据用户id:{},操作状态{}",new Object[]{id,bool});

            session.commit(); 

            return bool;

        } catch (Exception e) {

            e.printStackTrace();

            session.rollback(); 

            return false;

        }finally{

            session.close();

        }

    }

    

    

    /**

     * 根据id查询用户

     * @param id

     */

    private static void selectUserById(int id){

        SqlSession session=DBTools.getSession();

        UserMapper mapper=session.getMapper(UserMapper.class);

        try {

        UserBean user= mapper.selectUserById(id);

        logger.debug("根据用户Id:{},查询用户信息:{}",new Object[]{id,user});

        session.commit();

        } catch (Exception e) {

            e.printStackTrace();

            session.rollback();

        }finally{

            session.close();

        }

    }

    

    /**

     * 查询所有的用户

     */

    private static void selectAllUser(){

        SqlSession session=DBTools.getSession();

        UserMapper mapper=session.getMapper(UserMapper.class);

        try {

        List<UserBean> user=mapper.selectAllUser();

        logger.debug("获取所用的用户:{}",user);

        session.commit();

        } catch (Exception e) {

            e.printStackTrace();

            session.rollback();

        }finally{

            session.close();

        }

    }

}

这个是去一片博客学习的,之中出现了很多问题忘了截图了,在百度下一步一步解决,最后还有一个日志log4j在网上查的,测试结果如下

在最后确定程序正确之后对代码进行了消化,对mybatis进行了理解学习,工作量有点大。。) 
明天计划的事情:(继续加深对Mybatis的理解,学习spring框架下的JdbcTemplate。) 
遇到的问题:(没弄清楚DAO是什么,没弄明白我写的程序里有没有DAO,不知道命名规范是什么,百度资料很少。。。知道log4j文件,但不是很理解,) 
收获:(学习了Mybatis,学习了映射文件





返回列表 返回列表
评论

    分享到