您的位置:首页 > 其它

Mybatis入门

2017-09-01 13:33 260 查看
第一次利用官方文档学习知识,曾经觉得看官网挺难的,今天耐心的看了下去,发现还是挺不错的,这里详细的分享,带小白Mybatis入门。Mybatis官方教程后面不懂的地方可以查看,官网有中文版。

学什么都最好有实例,所以我们用一个实例来带学习。

首先,我们设计下数据库,如图:



这里解释提示下为什么数据类型是这样:

数据类型占用存储空间定义格式
Char(n)定长,最大8KB存ANSI字符,n为串长度
Varchar(n)变长,最大8KB存ANSI字符,n为串长度
Nchar(n)定长,最大8KB存Unicode字符,n为串长度
Nvarchar(n)变长,最大8KB存Unicode字符,n为串长度
**ANSIUnicode
英文字符1字节2字节
汉字2字节2字节
如上表所示,例:

Char(5):即长度为5,如果长为5,比如’21545’,即可以存储,如果你存的是’211’,长度为3,而Char是定长,所以211后面会补2个空格。让其强行成为长为5的串,所以Char适合定长。并且Char存的ANSI字符,所以如上表,一个英文占一个字节,而一个中文占两个字节,’西昌6’和’21545’占相同字节,Char适合全英文。

Varchar(5):即长度为5,如果存的数据占5个字节,比如’21545’,即可以存储,如果你存的是’211’,只有3个字节,而Varchar是变长,依然存储’211’,不补充空格。

NChar(5):即长度为5,’西昌666’和’仙剑奇侠传’就占相同字节,所以NChar适合中/英混合。

接下来我们创建项目,如图所示:



创建实体类:

public class Student {

private int ID;
private String Name;
private String Phone;
private String Age;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getAge() {
return Age;

public void setAge(String age) {
Age = age;
}

public Student(String name, String phone, String age) {
super();
Name = name;
Phone = phone;
Age = age;
}

public Student() {}

}


导入Mybatis和jdbc的包,创建Configuration.xml文件,可以在你下载的Mybatis压缩包中找到这个xml文件,复制过来,这里用的SQL Server2008,自己可以配置数据库的名字,密码,驱动等,如下:

<?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>
<settings>
<setting name="useGeneratedKeys" value="false"/>
<setting name="useColumnLabel" value="true"/>
</settings>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MybatisTest"/>
<property name="username" value="sa"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>

<!--
mapper是必须的,读取另一个xml,后面的Student.xml文件
-->
<mappers>
<mapper resource="sqlxml/Student.xml"/>
</mappers>

</configuration>


再创建Student.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">

<mapper namespace="Student">

<!--type哪一个类  -->
<resultMap type="com.entity.Student" id="StudentResult">
<id column="ID" jdbcType="INTEGER" property="ID"/> <!-- id为主键标签  result为普通标签-->
<result column="Name" jdbcType="NVARCHAR" property="Name"/>
<result column="Phone" jdbcType="NCHAR" property="Phone"/>
<result column="Age" jdbcType="NCHAR" property="Age"/>
</resultMap>

<!-- 找到对应关系resultmap会进行赋值 -->
<select id="queryStudentList" parameterType="com.entity.Student" resultMap="StudentResult">
select * from Student where Name=#{name}
</select>

</mapper>


以上配置完成之后就可以开始测试了。

public class DBTest {

public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
SqlSession session = null;
try {
//此处为官网推荐做法
InputStream inputStream = Resources.getResourceAsStream("configure/Configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sqlSessionFactory.openSession();

//这里是参数查询的设置,查询名字为吕布的学生
Student student = new Student();
student.setName("吕布");
list = session.selectList("Student.queryStudentList", student);

list.forEach((stu) ->  System.out.println(stu.getName()+" "+stu.getAge()+" "+stu.getPhone()));
} catch (IOException e) {
e.printStackTrace();
} finally {
//每次用完都要关闭
if(session!=null){
session=null;
}
}
}

}


以上就完成了查询操作了,是不是很简单,update以及删除和这类似,可以去官网查看,就不多说啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis