MyBatis学习笔记java
1、数据库与数据表的建立mysql
1.建立数据库sql
create database thymeleaf; use thymeleaf;
2.建立数据表数据库
create table tb_user( -> id int not null auto_increment, -> name varchar(20), -> password varchar(50), -> email varchar(50), -> primary key(id) -> )engine=innodb default charset=utf8;
3.插入测试数据apache
insert into tb_user -> (name,password,email) -> values('admin','admin','admin@126.com');
2、建立Java项目session
1.新建Java项目mybatis
2.在项目下建立User类,内容以下:app
package com.sky.demo2.bean; public class User { private Integer id; private String name; private String password; private String email; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", cg=" + cg + '}'; } //省略其setter和getter方法 }
3、Mybatis入门ide
1.引入mybatis工具
要使用MyBatis,只需将mybatis-x.x.x.jar文件置于classpath中便可。若是使用Maven来构建项目,则需将下面的dependency代码置于pom.xml文件中
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version> </dependency>
每一个基于MyBatis的应用都是以一个SqlSessionFactory的实例为中心的。
本次学习采用将mybatis-x.x.x.jar文件复制于classpath中,
在项目要根目录下,建立lib目录,将mybatis-3.4.6.jar和mysql-connector-java-5.1.44-bin.jar文件复制到该目录下,并添加到构建路径中。
2.建立mybatis-config.xml文件
每一个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例能够经过 SqlSessionFactoryBuilder 得到。而 SqlSessionFactoryBuilder 则能够从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
从 XML 文件中构建 SqlSessionFactory 的实例很是简单,建议使用类路径下的资源文件进行配置。
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> <properties resource="msqldatasource.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <!-- <mapper resource="com/sky/demo/dao/AccountMapper.xml" /> --> <package name="com.sky.demo2.dao"/> </mappers> </configuration>
其中properties,引入外部配置文件,该文件中主要配置数据库的相关信息,内容以下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/thymeleaf username=root password=123456
datasource部分,配置数据库的链接信息,从外部配置文件中取得
部分,配置Mapper映射文件的路径,有两种方式,一种是为每个Mapper文件配置,另外一种是配置Mapper文件的包路径。分别以下
<mapper resource="com/sky/demo/dao/AccountMapper.xml" /> <package name="com.sky.demo2.dao"/>
3.建立SqlSessionFactory,并从中获取SqlSession
为了实现该功能,采用工具类的方式实现,代码以下
package com.sky.demo2.util; 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 java.io.IOException; import java.io.InputStream; public class DBUtil { private static SqlSessionFactory sqlSessionFactory; static{ String resource="mybatis-config.xml"; try { InputStream inputStream=Resources.getResourceAsStream(resource); sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }
经过该类的的静态方法getSession()来获取到SqlSession
4.采用接口的方式建立Mapper映射
首先,建立一个接口,接口内容以下:
package com.sky.demo2.dao; import com.sky.demo2.bean.User; import java.util.List; public interface UserMapper { public User getUserById(int id); public List<User> getUserByClassId(int id); }
其次,建立Mapper的SQL映射文件,内容以下:
<?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="com.sky.demo2.dao.UserMapper"> <resultMap id="userMap" type="com.sky.demo2.bean.User"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="password" property="password"/> <result column="email" property="email"/> </resultMap> <select id="getUserById" resultMap="userMap"> select * from tb_user where id = #{id} </select> <select id="getUserByClassId" resultMap="userMap"> select * from tb_user where classid=#{id} </select> </mapper>
4、利用mybatis访问查询数据
package com.sky.demo2; import com.sky.demo2.bean.ClassAndGrade; import com.sky.demo2.bean.User; import com.sky.demo2.dao.ClassAndGradeMapper; import com.sky.demo2.dao.UserMapper; import com.sky.demo2.util.DBUtil; import org.apache.ibatis.session.SqlSession; import java.util.List; public class Test2 { public static void main(String[] args) { UserMapper userMapper=session.getMapper(com.sky.demo2.dao.UserMapper.class); User user=userMapper.getUserById(1); System.out.println(user.toString()); } }