1.如何使用mybatis
- 創(chuàng)建user表誉尖,添加數(shù)據(jù)
- 創(chuàng)建模塊葱轩,導(dǎo)入坐標(biāo)
- 編寫My Batis核心配置文件
- 編寫sql映射文件
- 編碼
- 定義pojo類
- 加載核心配置文件,獲取SqlSessionFactory對(duì)象
- 獲取SqlSession對(duì)象,執(zhí)行SQL語句
- 釋放資源
1.創(chuàng)建user表缘圈,添加數(shù)據(jù)
測試代碼:
create database mybatis;
use mybatis;
drop table if exists tb_user;
create table tb_user(
id int primary key auto_increment,
username varchar(20),
password varchar(20),
gender char(1),
addr varchar(30)
);
INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
2.創(chuàng)建模塊,導(dǎo)入坐標(biāo)[導(dǎo)入測試包時(shí)袜蚕,還需要使用 logback.xml 配置文件]
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- 添加slf4j日志api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.20</version>
</dependency>
<!-- 添加logback-classic依賴 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 添加logback-core依賴 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<!--mysql驅(qū)動(dòng)-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
<scope>compile</scope>
</dependency>
<!--junit單元測試-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<!--mybatis-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
<!--logback.xml文件-->
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
CONSOLE :表示當(dāng)前的日志信息是可以輸出到控制臺(tái)的糟把。
-->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
</encoder>
</appender>
<logger name="com.itheima" level="DEBUG" additivity="false">
<appender-ref ref="Console"/>
</logger>
<!--
level:用來設(shè)置打印級(jí)別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
牲剃, 默認(rèn)debug
<root>可以包含零個(gè)或多個(gè)<appender-ref>元素遣疯,標(biāo)識(shí)這個(gè)輸出位置將會(huì)被本日志級(jí)別控制。
-->
<root level="DEBUG">
<appender-ref ref="Console"/>
</root>
</configuration>
3.編寫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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
4. 編寫sql映射文件userMapper.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">
<!--
namespace:名稱空間
-->
<mapper namespace="text">
<select id="selectAll" resultType="com.itheima.pojo.User">
select *
from tb_user;
</select>
<select id="selectById" resultType="user">
select *
from tb_user where id = #{id};
</select>
</mapper>
5. 編碼
定義pojo類
加載核心配置文件凿傅,獲取SqlSessionFactory對(duì)象
獲取SqlSession對(duì)象缠犀,執(zhí)行SQL語句
-
釋放資源
package com.itheima; import com.itheima.pojo.User; 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; import java.util.List; /** * Mybatis 快速入門代碼 */ public class MyBatisDemo { public static void main(String[] args) throws IOException { //1. 加載mybatis的核心配置文件数苫,獲取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 獲取SqlSession對(duì)象,用它來執(zhí)行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 執(zhí)行sql List<User> users = sqlSession.selectList("text.selectAll"); System.out.println(users); //4. 釋放資源 sqlSession.close(); } }
優(yōu)化代碼使用Mapper代理(解決硬編碼問題辨液,簡化后期sql代碼)
定義新建與sql映射文件同名的mapper接口虐急,并將mapper接口和sql映射文件放置在同一目錄下(**在resources下新建層級(jí)目錄時(shí)使用com/user/mapper ” 斜杠 ” **)
-
設(shè)置sql映射文件:mybatis-config.xmlnamespace屬性為Mapper接口權(quán)限定名(小細(xì)節(jié):后期如果有多個(gè)mapper文件,使用packing-name:com.bohai.mapper)
<!-- 加載sql映射文件--> <mapper resource="com/itheima/mapper/UserMapper.xml"/> <!--Mapper代理方式--> <!-- <package name="com.itheima.mapper"/>-->
-
在Mapper接口:large_blue_circle:中定義方法滔迈,方法名為SQL映射文件中sql語句的id止吁,并保持參數(shù)類型和返回值類型一致
import com.itheima.pojo.User; import java.util.List; public interface UserMapper { List<User> selectAll(); //查詢user對(duì)象的selectAll()方法 User selectById(int id);
-
編碼
-
通過sqlSession的getMapper方法獲取Mapper接口的代理對(duì)象
//3.1 獲取UserMapper接口的代理對(duì)象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
調(diào)用對(duì)應(yīng)的方法,完成sql執(zhí)行
List<User> users = userMapper.selectAll();
-
完整代碼:
package com.itheima; import com.itheima.mapper.UserMapper; import com.itheima.pojo.User; 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; import java.util.List; /** * Mybatis 代理開發(fā) */ public class MyBatisDemo2 { public static void main(String[] args) throws IOException { //1. 加載mybatis的核心配置文件燎悍,獲取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 獲取SqlSession對(duì)象敬惦,用它來執(zhí)行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 獲取UserMapper接口的代理對(duì)象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> users = userMapper.selectAll(); System.out.println(users); //4. 釋放資源 sqlSession.close(); } }
-