mybatis简单入门实例

最近刚接触到mybatis这个orm框架,之前接触过hibernate,不过想吐槽的是hibernate真的比较重量级,开发比较麻烦,所以再来看看mybatis怎么样。
以下是上手小实例。
1.环境部署:引入相关jar包(这里介绍个网站MavenRepository,http://mvnrepository.com ,可以在上面搜寻需要的maven依赖)
2.相关配置文件的配置
(1).Mybatis主配置文件—–Configure.xml(名字不限)

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

    <!-- 引入外部配置文件 -->
    <properties resource="mybatis/config.properties"/>


    <!-- 为JAVA Bean起类别名,简化开发 -->
    <typeAliases >
        <package name="vip.ntwxhn.model"/>
    </typeAliases>
    <!-- 配置mybatis运行环境 ,注意:在mybatis和spring整合后environments的配置会省略-->
    <environments default="development">
        <environment id="development">
            <!--采用jdbc的事务提交-->
            <transactionManager type="JDBC" />
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <!--mapper标签配置的是映射文件-->
        <mapper resource="mappers/User.xml"/>
    </mappers>

</configuration>

(2)Configure.xml中引用的config.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root

注:jdbc.url的配置看着好像过长,但是后面的参数都是有用的,解决了我的程序运行时的一个异常,如下:

java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. 
You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

这个错误是因为mysql连接的依赖包是高版本的情况下,在配置jdbc.url不能像jdbc:mysql://localhost:3306/blog这样简单的配::
得像下面这样配

jdbc.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

(3)映射文件UserMapper.xml(上面好像有些啰嗦,哈哈)

<?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">
<!--sql语句结尾不加分号-->
<!--sql语句中#{}代表占位符,没有sql注入的危险;${}是拼接符,有sql注入的危险-->
<mapper namespace="test">
    <select id="query" parameterType="java.lang.String" resultType="vip.ntwxhn.model.User">
      SELECT * FROM USER WHERE username LIKE '%${value}%'
    </select>

    <!--插入时参数类型为pojo-->
    <insert id="add" parameterType="vip.ntwxhn.model.User" >
        INSERT INTO USER(userId,username) VALUES(#{userId},#{username});
    </insert>
</mapper>

(4)当然还得有实体类User

package vip.ntwxhn.model;

/**
 * Created by user on 2017/11/17.
 */
public class User {
    private String userId;
    private String username;
    private String password;
    private String email;
    private String phonenumber;

setter,getter省略.....

(5)测试类Test

package vip.ntwxhn.service;

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 vip.ntwxhn.model.User;

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

/**
 * Created by user on 2017/11/5.
 */
public class Test {
    public static void main(String[] args) throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis/Configure.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
//      User user = new User();
//      user.setUserId("6");
//      user.setUsername("dfg");
//      sqlSession.insert("test.add",user);
//      sqlSession.commit();
        User user  = sqlSession.selectOne("test.query", "1");
        System.out.println(user);
        sqlSession.close();
    }
}

以上代码都是运行过再贴的,如果想粘贴的话,请放心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值