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()); } }