mybatis学习笔记(一)

今天开始一系列有关mybatis的学习

准备工作

1.mybatis的jar包

2.mysql的jdbc包

3.mysql数据库

在工程开始之前把这两个jar包下载好构建路径,在数据库创建好相关的表,组织好整体的文件结构。我所设置的文件结构如下图所示,其中专门建了一个resource文件夹放置配置文件,这样引用起来比较方便。

两个重要XML配置文件

1.mybatis-config.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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="Mapper.xml"/>
  </mappers>
</configuration>

2.Mapper.xml

这个文件主要是来写sql语句的,相当于一个映射。在这里我只给出了一个查询语句的例子,对应的接口是UserMapeper。

<?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="level1.UserMapper">
  <select id="selectUser" parameterType="String" resultType="level1.User">
    select * from User where name = #{name}
  </select>
</mapper>

对应的Mapper的接口

这个接口中的方法名称是和前面Mapper.xml中id所对应的,这里的selectUser就与之对应了。

package level1;

public interface UserMapper {
	public User selectUser(String name);
}

实体类

我设计的实体类User包含了名字、年龄和生日三个属性。

package level1;

import java.sql.Date;

public class User {
	private String name;
	private Integer age;
	private Date birthday;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}

主类

这里实现了查询方法的调用

package level1;

import java.io.IOException;
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;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		InputStream inputStream = null;
		String resource="mybatis-config.xml";
		try {
			inputStream=Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session=sessionFactory.openSession();
		UserMapper mapper=session.getMapper(UserMapper.class);
		User user=mapper.selectUser("zhoudaxia");
		System.out.println(user.getName());
		System.out.println(user.getAge());
		System.out.println(user.getBirthday());
	}

}

测试结果

遇到的问题

在代码编写的过程中遇到的一些问题:

1.在xml文件中的&需要转换成&amp;才能被识别

2.一开始会报BigInteger强转成Long的错误,原因竟然是mysql的jar包版本太低,换了一个高版本的就好了

3.高版本的mysql连接时需要加上useSSL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值