Mybatis入门

xiaoxiao2021-02-28  76

第一次利用官方文档学习知识,曾经觉得看官网挺难的,今天耐心的看了下去,发现还是挺不错的,这里详细的分享,带小白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以及删除和这类似,可以去官网查看,就不多说啦。

转载请注明原文地址: https://www.6miu.com/read-77511.html

最新回复(0)