首页 > 学院 > 开发设计 > 正文

MyBatis我来了

2019-11-06 08:04:44
字体:
来源:转载
供稿:网友

项目流程:

1、从eclipse中jdbc.PRoperties中复制过来数据库的连接属性。

2、创建项目mybatis-hong

3、在WEB-INF中的lib中载入jar包

4、先建立Student类

5、数据库创建并建表

6、并对Student创建对应的StudentMapper.xml文件,将对象与数据库中的字段匹配。

7、编写mybatis.xml(连接数据库的驱动帐号等)

8、编写工具类MyBatisUtil.java

9、执行测试类StudentDao.java

10、再次刷新数据库,可以看到数据已经被载入数据库中。

 

详细步骤及代码:

实战开始:

1、从eclipse中jdbc.properties中复制过来数据库的连接属性。

jdbc.url=jdbc/:MySQL/://192.168.100.251/:3306/wbj_bus?useUnicode/=true&characterEncoding/=UTF-8

jdbc.user=root

jdbc.passWord=wbj999888a

 

2、创建项目mybatis-hong

src——cn.itcast.javaee.mybatis——base——Student.java

src——cn.itcast.javaee.mybatis——base——StudentDao.java

src——cn.itcast.javaee.mybatis——base——StudentMapper.xml

src——cn.itcast.javaee.mybatis——base——Students.sql

 

src——cn.itcast.javaee.mybatis——util——MybatisUtil.java

另外就是:

src——mybatis.xml

 

3、在WEB-INF中的lib中载入jar包

asm-3.3.1.jar,c3p0-0.9.1.2.jar,cglib-2.2.2.jar,commons-logging-1.1.1.jar

log4j-1.2.16.jar,mybatis-3.1.1.jar,mysql-connector-java-5.1.20-bin.jar

ojdbc5.jar

并进行载入,build path

 

4、先建立Student类

package cn.itcast.javaee.mybatis.base;

/**

 * 学生

 * @author AdminTC

 */

public classStudent {

    private Integerid;

    private Stringname;

    private Doublesal;

    public Student(){}

    public Student(Integer id,String name, Double sal) {

        this.id = id;

        this.name = name;

        this.sal= sal;

    }

    public Integer getId() {

        returnid;

    }

    public void setId(Integer id) {

        this.id = id;

    }

    public String getName() {

        returnname;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Double getSal() {

        returnsal;

    }

    public void setSal(Double sal) {

        this.sal = sal;

    }

}

 

5、数据库创建并建表

--mysql

createtable students(

    sidint(5) primary key,

    snamevarchar(10),

    ssaldouble(8,2)

);

 

6、并对Student创建对应的StudentMapper.xml文件,将对象与数据库中的字段匹配。

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEmapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mappernamespace="studentNamespace">

    <resultMaptype="cn.itcast.javaee.mybatis.base.Student"id="studentMap">

        <idproperty="id"column="sid"/>

        <resultproperty="name"column="sname"/>

        <resultproperty="sal"column="ssal"/>

    </resultMap>       

    <insertid="add"parameterType="cn.itcast.javaee.mybatis.base.Student">

        insertinto students(sid,sname,ssal) values(#{id},#{name},#{sal})

    </insert>

</mapper>

 

7、编写mybatis.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEconfiguration PUBLIC"-//mybatis.org//DTDConfig 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

 

<configuration>

   

    <environmentsdefault="mysql_developer">

   

        <environmentid="mysql_developer">

       

            <transactionManagertype="jdbc"/>  

   

            <dataSourcetype="pooled">

               

                <propertyname="driver"value="com.mysql.jdbc.Driver"/>

                <propertyname="url"value="jdbc:mysql://192.168.100.251:3306/test1?useUnicode=true&amp;characterEncoding=UTF-8"/>

                <propertyname="username"value="root"/>

                <propertyname="password"value="wbj999888a"/>

           

            </dataSource>

           

        </environment>

   

    </environments>

 

    <mappers>

        <mapperresource="cn/itcast/javaee/mybatis/base/StudentMapper.xml"/>

    </mappers>

   

 

</configuration>

 

8、编写工具类MyBatisUtil.java

package cn.itcast.javaee.mybatis.util;

import java.io.IOException;

import java.io.Reader;

import java.sql.Connection;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**

 * 工具类

 * @author AdminTC

 */

public classMybatisUtil {

    private staticThreadLocal<SqlSession> threadLocal =newThreadLocal<SqlSession>();

    private static SqlSessionFactory sqlSessionFactory;

    /**

     * 加载位于src/mybatis.xml配置文件

     */

    static{

        try {

            Readerreader = Resources.getResourceAsReader("mybatis.xml");

            sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);

        }catch(IOException e) {

            e.printStackTrace();

            throw new RuntimeException(e);

        }

    }

    /**

     * 禁止外界通过new方法创建

     */

    private MybatisUtil(){}

    /**

     * 获取SqlSession

     */

    public static SqlSessiongetSqlSession(){

        //从当前线程中获取SqlSession对象

        SqlSessionsqlSession = threadLocal.get();

        //如果SqlSession对象为空

        if(sqlSession ==null){

            //在SqlSessionFactory非空的情况下,获取SqlSession对象

            sqlSession= sqlSessionFactory.openSession();

            //将SqlSession对象与当前线程绑定在一起

            threadLocal.set(sqlSession);

        }

        //返回SqlSession对象

        return sqlSession;

    }

    /**

     * 关闭SqlSession与当前线程分开

     */

    public static void closeSqlSession(){

        //从当前线程中获取SqlSession对象

        SqlSessionsqlSession = threadLocal.get();

        //如果SqlSession对象非空

        if(sqlSession !=null){

            //关闭SqlSession对象

            sqlSession.close();

            //分开当前线程与SqlSession对象的关系,目的是让GC尽早回收

            threadLocal.remove();

        }

    }

 

    /**

     * 测试

     */

    public static void main(String[] args) {

        Connectionconn = MybatisUtil.getSqlSession().getConnection();

        System.out.println(conn!=null?"连接成功":"连接失败");

    }

}

 

9、执行测试类StudentDao.java

package cn.itcast.javaee.mybatis.base;

 

import org.apache.ibatis.session.SqlSession;

 

importcn.itcast.javaee.mybatis.util.MybatisUtil;

 

/**

 * 持久层

 * @authorAdminTC

 */

public class StudentDao {

    /**

     * 增加学生

     */

    publicvoid add(Student student) throws Exception{

        SqlSessionsqlSession = null;

        try{

            sqlSession= MybatisUtil.getSqlSession();

            sqlSession.insert("studentNamespace.add",student);

            sqlSession.commit();

        }catch(Exceptione){

            e.printStackTrace();

            sqlSession.rollback();

            throwe;

        }finally{

            MybatisUtil.closeSqlSession();

        }

    }

 

    /**

     * 测试

     */

    publicstatic void main(String[] args) throws Exception{

        StudentDaodao = new StudentDao();

        dao.add(newStudent(3,"中中中",3600D));

    }

}

 

10、再次刷新数据库,可以看到数据已经被载入数据库中。

    注意id字段不能重复,否则会报错。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表