Mybatis在Maven上的 hello world

首先给大家展示一下Maven上的构建的Mybatis 的框架是什么样子的。

源码地址:链接:http://pan.baidu.com/s/1geYfipX 密码:dcnk



要求:默认你已经安装了  Myeclipse 和 Maven插件,没有安装的百度一下,先安装这两个东西。

好了,首先在数据库中创建一张表,数据库采用的mysql 可以将下边的文件直接导入数据库就行

Sql.txt  是在mysql中创建的。

 

drop DATABASE mybatisdemo

 

CREATE DATABASE mybatisdemo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

 

DROP table t_user

 

CREATE TABLE mybatisdemo.t_user (

  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

  username VARCHAR(50) DEFAULT NULL COMMENT '用户名称' ,

  birthday DATE DEFAULT NULL COMMENT '生日',

  sex CHAR(2) DEFAULT NULL COMMENT '性别',

  address VARCHAR(256) DEFAULT NULL COMMENT '地址'

);

 

INSERT INTO mybatisdemo.t_user (username,birthday,sex,address)

                                VALUES

                   ('小A','2015-06-27','2','北京'),

                   ('小B','2015-06-27','2','北京'),

                   ('小C','2015-06-27','1','北京'),

                   ('小D','2015-06-27','2','北京');

 

select *from mybatisdemo.t_user


先搭建maven环境






然后在pom.xml中写入依赖,这就是maven中packaging是jar的创建方式。


Pom.xml文件(里边有很多是用不到的,但是大项目中基本就是这些)

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.huayu.mybatis</groupId>

  <artifactId>mybatis</artifactId>

  <version>0.0.1-SNAPSHOT</version>

 

<!-- 集中定义依赖版本号 -->

    <properties>

        <junit.version>4.12</junit.version>

        <spring.version>4.1.3.RELEASE</spring.version>

        <mybatis.version>3.2.8</mybatis.version>

        <mybatis.spring.version>1.2.2</mybatis.spring.version>

        <mybatis.paginator.version>1.2.15</mybatis.paginator.version>

        <mysql.version>5.1.32</mysql.version>

        <slf4j.version>1.6.4</slf4j.version>

        <jackson.version>2.4.2</jackson.version>

        <druid.version>1.0.9</druid.version>

        <httpclient.version>4.3.5</httpclient.version>

        <jstl.version>1.2</jstl.version>

        <servlet-api.version>2.5</servlet-api.version>

        <jsp-api.version>2.0</jsp-api.version>

        <joda-time.version>2.5</joda-time.version>

        <commons-lang3.version>3.3.2</commons-lang3.version>

        <commons-io.version>1.3.2</commons-io.version>

        <commons-net.version>3.3</commons-net.version>

        <pagehelper.version>3.4.2</pagehelper.version>

        <jsqlparser.version>0.9.1</jsqlparser.version>

        <commons-fileupload.version>1.3.1</commons-fileupload.version>

        <jedis.version>2.7.2</jedis.version>

        <solrj.version>4.10.3</solrj.version>

        <freemarker.version>2.3.23</freemarker.version>

        <quartz.version>2.2.2</quartz.version>

    </properties>

        <dependencies>

            <!-- 时间操作组件 -->

            <dependency>

                <groupId>joda-time</groupId>

                <artifactId>joda-time</artifactId>

                <version>${joda-time.version}</version>

            </dependency>

            <!-- Apache工具组件 -->

            <dependency>

                <groupId>org.apache.commons</groupId>

                <artifactId>commons-lang3</artifactId>

                <version>${commons-lang3.version}</version>

            </dependency>

            <dependency>

                <groupId>org.apache.commons</groupId>

                <artifactId>commons-io</artifactId>

                <version>${commons-io.version}</version>

            </dependency>

            <dependency>

                <groupId>commons-net</groupId>

                <artifactId>commons-net</artifactId>

                <version>${commons-net.version}</version>

            </dependency>

            <!-- Jackson Json处理工具包 -->

            <dependency>

                <groupId>com.fasterxml.jackson.core</groupId>

                <artifactId>jackson-databind</artifactId>

                <version>${jackson.version}</version>

            </dependency>

            <!-- httpclient -->

            <dependency>

                <groupId>org.apache.httpcomponents</groupId>

                <artifactId>httpclient</artifactId>

                <version>${httpclient.version}</version>

            </dependency>

            <!-- 单元测试 -->

            <dependency>

                <groupId>junit</groupId>

                <artifactId>junit</artifactId>

                <version>${junit.version}</version>

                <scope>test</scope>

            </dependency>

            <!-- 日志处理 -->

            <dependency>

                <groupId>org.slf4j</groupId>

                <artifactId>slf4j-log4j12</artifactId>

                <version>${slf4j.version}</version>

            </dependency>

            <!-- Mybatis -->

            <dependency>

                <groupId>org.mybatis</groupId>

                <artifactId>mybatis</artifactId>

                <version>${mybatis.version}</version>

            </dependency>

            <dependency>

                <groupId>org.mybatis</groupId>

                <artifactId>mybatis-spring</artifactId>

                <version>${mybatis.spring.version}</version>

            </dependency>

            <dependency>

                <groupId>com.github.miemiedev</groupId>

                <artifactId>mybatis-paginator</artifactId>

                <version>${mybatis.paginator.version}</version>

            </dependency>

            <dependency>

                <groupId>com.github.pagehelper</groupId>

                <artifactId>pagehelper</artifactId>

                <version>${pagehelper.version}</version>

            </dependency>

            <!-- MySql -->

            <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

                <version>${mysql.version}</version>

            </dependency>

            <!-- 连接池 -->

            <dependency>

                <groupId>com.alibaba</groupId>

                <artifactId>druid</artifactId>

                <version>${druid.version}</version>

            </dependency>

            <!-- Spring -->

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-context</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-beans</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-webmvc</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-jdbc</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-aspects</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-context-support</artifactId>

                <version>${spring.version}</version>

            </dependency>

            <!-- JSP相关 -->

            <dependency>

                <groupId>jstl</groupId>

                <artifactId>jstl</artifactId>

                <version>${jstl.version}</version>

            </dependency>

            <dependency>

                <groupId>javax.servlet</groupId>

                <artifactId>servlet-api</artifactId>

                <version>${servlet-api.version}</version>

                <scope>provided</scope>

            </dependency>

            <dependency>

                <groupId>javax.servlet</groupId>

                <artifactId>jsp-api</artifactId>

                <version>${jsp-api.version}</version>

                <scope>provided</scope>

            </dependency>

            <!-- 文件上传组件 -->

            <dependency>

                <groupId>commons-fileupload</groupId>

                <artifactId>commons-fileupload</artifactId>

                <version>${commons-fileupload.version}</version>

            </dependency>

            <!-- Redis客户端 -->

            <dependency>

                <groupId>redis.clients</groupId>

                <artifactId>jedis</artifactId>

                <version>${jedis.version}</version>

            </dependency>

            <!-- solr客户端 -->

            <dependency>

                <groupId>org.apache.solr</groupId>

                <artifactId>solr-solrj</artifactId>

                <version>${solrj.version}</version>

            </dependency>

            <dependency>

                <groupId>org.freemarker</groupId>

                <artifactId>freemarker</artifactId>

                <version>${freemarker.version}</version>

            </dependency>

            <dependency>

                <groupId>org.quartz-scheduler</groupId>

                <artifactId>quartz</artifactId>

                <version>${quartz.version}</version>

            </dependency>

        </dependencies>

 

    <build>

        <finalName>${project.artifactId}</finalName>

        <plugins>

            <!-- 资源文件拷贝插件 -->

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-resources-plugin</artifactId>

                <version>2.7</version>

                <configuration>

                    <encoding>UTF-8</encoding>

                </configuration>

            </plugin>

            <!-- java编译插件 -->

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-compiler-plugin</artifactId>

                <version>3.2</version>

                <configuration>

                    <source>1.7</source>

                    <target>1.7</target>

                    <encoding>UTF-8</encoding>

                </configuration>

            </plugin>

            <!-- 配置Tomcat插件 -->

              <plugin>

                  <groupId>org.apache.tomcat.maven</groupId>

                  <artifactId>tomcat7-maven-plugin</artifactId>

                  <version>2.2</version>

              </plugin>

        </plugins>

    </build>

</project>

 

 

 

 

SqlMapConfig.xml文件

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

<!DOCTYPEconfiguration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

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

 

<configuration>

    <propertiesresource="jdbc.properties"></properties>

   

    <typeAliases>

        <typeAliastype="cn.huayu.mybatis.pojo.User"alias="User"/>

    </typeAliases>

   

    <!-- spring整合后 environments配置将废除

    配置环境,数据库连接-->

   

    <environmentsdefault="development">

        <environmentid="development">

        <!-- 使用jdbc事务管理,事务控制由mybatis管理-->

            <transactionManagertype="JDBC"/>

        <!-- 数据库连接池,mybatis管理-->

            <dataSourcetype="POOLED">

                <propertyname="driver"value="${jdbc.driver}"/>

                <propertyname="url"value="${jdbc.url}"/>

                <propertyname="username"value="${jdbc.username}"/>

                <propertyname="password"value="${jdbc.password}"/>

            </dataSource>

        </environment>

    </environments>

   

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

    <mappers>

        <mapperresource="UserDaoMaper.xml"/>

    </mappers>

</configuration>

 

UserDaoMapper.xml

 

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

<!DOCTYPEmapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

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

<!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离

    注意:使用mapper代理开发时,namespace有特殊作用

 -->

<!-- <mapper namespace="test"> -->

<!-- 可以不用使用实现类了,直接调用接口-->

<mappernamespace="cn.huayu.mybatis.dao.UserDao">

<!-- 在映射文件中配置很多sql语句 -->

<!-- 需求:通过Id查询用户表的记录 -->

<!-- 通过SELECT执行数据库查询

    id:标识映射文件中的sql,称为statementid;

        sql语句封装在mapperStatement的对象中,所以Id称为Statementid;

    parameterType:指定输入参数的类型,这里指定int

    #{}:表示一个占位符;

    #{id}:其中Id表示接收输入的参数,参数名称就是Id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其它名称;

    resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象。

-->

<selectid="findUserById"parameterType="int"resultType="cn.huayu.mybatis.pojo.User">

    select * from t_user where id=#{id}

</select>

<!-- 根据用户名称模糊查询用户信息,可能返回多条数据

    resultType:指定的就是单条记录所映射的java类型;

    ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql.

    使用${}拼接sql,可能会引起sql注入

    ${value}:接收输入参数的内容,如果传入的是简单类型,${}中只能使用value

 -->

<selectid="findUserByName"parameterType="java.lang.String"resultType="cn.huayu.mybatis.pojo.User">

    select * from t_user where username LIKE '%${value}%'

</select>

<!-- 添加用户

parameterType:指定输入的参数类型是pojo(包括用户信息);

#{}中指定pojo的属性名称,接收到pojo对象的属性值 ,mybatis通过OGNL(类似struts2OGNL)获取对象的属性值

-->

<insertid="insertUser"parameterType="user">

    <!--

        insert插入的数据的主键返回到User对象中;

        select last_insert_id():得到刚insert进去记录的主键值,只适用于自增主键;

        keyProperty:将查询到的主键值,设置到parameterType指定的对象的那个属性

        order:select last_insert_id()执行顺序,相对于insert语句来说它的执行顺序。

        resultType:指定select last_insert_id()的结果类型;

     -->

    <selectKeykeyProperty="id"order="AFTER"resultType="java.lang.Integer">

        select last_insert_id()

    </selectKey>

    insert into t_user (username,sex,address) values(#{username},#{sex},#{address})

    <!--

   

        使用mysqluuid(),实现非自增主键的返回。

        执行过程:通过uuid()得到主键,将主键设置到user对象的Id的属性中,其次,在insert执行时,从user对象中取出Id属性值;

   

     <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">

        select uuid()

    </selectKey>

        insert into t_user (id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address})

      -->

   

</insert>

<!-- 删除用户

    根据ID删除用户,需要输入Id

-->

 

    <deleteid="deleteUser"parameterType="java.lang.Integer">

        delete from t_user where id=#{id}

    </delete>

 

<!-- 更新用户

    需要传入用户的Id和用户的更新信息

    parameterType:指定User对象,包括Id和用户的更新信息,注意:Id是必须存在的

    #{id}:从输入的User对象中获取Id的属性值

-->

<updateid="updateUser"parameterType="user">

    update t_user set username=#{username},sex=#{sex},address=#{address}

    where id=#{id}

</update>

 

</mapper>

 

 

 

 

 

jdbc.properties

##mysql  autoReconnect  keyishixianfuwuqi meiyoulianjie  keyi dengdailianjiebuhuidangji

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc\:mysql\://localhost\:3306/mybatisdemo?useUnicode\=true&characterEncoding\=UTF-8&autoReconnect\=true

jdbc.username=root

jdbc.password=root

 

log4j.properties

# Global logging configuration

#\u5728\u5F00\u53D1\u7684\u73AF\u5883\u4E0B\uFF0C\u65E5\u5FD7\u7EA7\u522B\u8981\u8BBE\u7F6E\u6210DEBUG\uFF0C\u751F\u4EA7\u73AF\u5883\u8BBE\u7F6E\u6210info\u6216error

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n

UserDao

 

/*

 * @(#)UserDao.java 2017-7-12下午2:21:06

 * mybatis

 * Copyright 2017 Thuisoft, Inc. All rights reserved.

 * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

 */

package cn.huayu.mybatis.dao;

 

import cn.huayu.mybatis.pojo.User;

 

/**

 * UserDao

 * @author huayu

 * @version 1.0

 *

 */

public interface UserDao {

 

    /**

     * 根據用户id查询数据

     */

   

    public User findUserById(int id);

   

    /**

     * 增添数据

     *

     */

    public void insertUser(User user);

    /**

     * 更新数据

     */

    public void updateUser(User user);

    /**

     * 根据id删除数据

     */

    public void deleteUser(int id);

}

 

UserDaoImpl

/*

 * @(#)UserDaoImpl.java 2017-7-12下午2:10:58

 * mybatis

 * Copyright 2017 Thuisoft, Inc. All rights reserved.

 * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

 */

package cn.huayu.mybatis.impl;

 

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

 

import cn.huayu.mybatis.dao.UserDao;

import cn.huayu.mybatis.pojo.User;

 

 

 

/**

 * UserDaoImpl

 * @author huayu

 * @version 1.0

 *

 */

public class UserDaoImpl implements UserDao{

 

    private SqlSessionFactory sqlsessionfactory ;

    public UserDaoImpl(SqlSessionFactory sqlSessionFactory){

        this.sqlsessionfactory =sqlSessionFactory;

    }

   

/** (non-Javadoc)

 * @see cn.huayu.mybatis.dao.UserDao#queryUserByid(java.lang.Long)

 */

   

@Override

public User findUserById(int id) {

    // TODO Auto-generated method stub

    SqlSession  sqlSession =sqlsessionfactory.openSession();

    User user =sqlSession.selectOne("test.findUserById",id);

    sqlSession.close();

    return user;

}

/** (non-Javadoc)

     * @see cn.huayu.mybatis.dao.UserDao#saveUser(cn.huayu.mybatis.pojo.User)

     */

    @Override

    public void insertUser(User user) {

        SqlSession  sqlSession =sqlsessionfactory.openSession();

        sqlSession.insert("test.insertUser",user);

        sqlSession.commit();

        sqlSession.close();

    }

    /** (non-Javadoc)

         * @see cn.huayu.mybatis.dao.UserDao#updateUser(cn.huayu.mybatis.pojo.User)

         */

        @Override

        public void updateUser(User user) {

            SqlSession  sqlSession =sqlsessionfactory.openSession();

            sqlSession.update("test.updateUser",user);

            sqlSession.commit();

            sqlSession.close();

        }

        /** (non-Javadoc)

             * @see cn.huayu.mybatis.dao.UserDao#deleteUserById(java.lang.Long)

             */

            @Override

            public void deleteUser(int id) {

                SqlSession  sqlSession =sqlsessionfactory.openSession();

                sqlSession.delete("test.deleteUser",id);

                sqlSession.commit();

                sqlSession.close();

            }

}

 

 

User

 

package cn.huayu.mybatis.pojo;

 

import java.util.Date;

 

/**

 * User

 * @authorhuayu

 * @version 1.0

 *

 */

public class User {

    // 属性名称和数据库字段名称保持一致

    private Integerid;

    // 姓名

    private Stringusername;

    // 性别

    private Stringsex;

    // 地址

    private Stringaddress;

    // 生日

    private Datebirthday;

 

    public Integer getId() {

        returnid;

    }

 

    public void setId(Integer id) {

        this.id = id;

    }

 

    public String getUsername() {

        returnusername;

    }

 

    public void setUsername(String username) {

        this.username = username;

    }

 

    public String getSex() {

        returnsex;

    }

 

    public void setSex(String sex) {

        this.sex = sex;

    }

 

    public String getAddress() {

        returnaddress;

    }

 

    public void setAddress(String address) {

        this.address = address;

    }

 

    public Date getBirthday() {

        returnbirthday;

    }

 

    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }

 

    @Override

    public String toString() {

        return"User [id=" +id +", username=" +username +", sex=" +sex

                + ", address=" +address +", birthday=" +birthday +"]";

    }

 

}

 

testUser

/*

 * @(#)testUser.java 2017-7-12下午2:18:11

 * mybatis

 * Copyright 2017 Thuisoft, Inc. All rights reserved.

 * THUNISOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

 */

package cn.huayu.mybatis;

 

import java.io.InputStream;

 

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.Before;

import org.junit.Test;

 

import cn.huayu.mybatis.dao.UserDao;

import cn.huayu.mybatis.pojo.User;

 

/**

 * testUser

 * @author huayu

 * @version 1.0

 *

 */

 

public class testUser {

    private UserDao userdao;

    @Before

    public void setUp() throws Exception {

        String resource = "sqlMapConfig.xml";

        InputStream inputStream = Resources.getResourceAsStream(resource);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

      

        //  userdao = new userdaoImpl(sqlSessionFactory);

          //使用动态代理方式省略impl实现类

      SqlSession session= sqlSessionFactory.openSession();

      userdao= session.getMapper(UserDao.class);

     

    }

    //测试查询

    @Test

    public void testQueryUserById() {

       User user = userdao.findUserById(1);

       System.out.println(user);

    }

     //测试插入

    @Test

    public void testSaveUser(){

        User user =new User();

        user.setUsername("秦孝公");

        user.setSex("男");

        user.setAddress("陕西");

        userdao.insertUser(user);

    }

    //测试删除

    @Test

    public void testdeleteUser(){

       userdao.deleteUser(19);

    }

    //测试更新

    @Test

    public void testUpdateUser(){

        User user =new User();

        user.setAddress("安徽");

        user.setUsername("商鞅");

        user.setId(18);

        userdao.updateUser(user);

    }

}

 

运行testUser。

mybatis 实际上是可以省略实现类的,在这我把实现类也给大家贴出来了,方便大家测试,Mybatis 和Hibernate相比,体现的优势其实也在一定程度上体现在省略实现类。

如果大家有疑问可以随时联系我(qq:742002761一般都在线)



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值