一 創(chuàng)建UserMapper接口
package com.yuyi.mapper;
? ?import java.util.List;
? ? import org.apache.ibatis.annotations.Delete;
? ? import org.apache.ibatis.annotations.Insert;
? ? import org.apache.ibatis.annotations.Param;
? ? import org.apache.ibatis.annotations.Select;
? ? import com.yuyi.pojo.User;
? ?public interface UserMapper {
? ? @Insert("insert into user(username) values (#{username})")
? ? public int addUser(User user);
? ?@Select("select * from user where id=#{id}")
? ? public User getUserById(int id);
? ?@Delete("DELETE FROM user WHERE id=#{id}")
? ? public void deleteUser(int id);
? ? @Select("SELECT * from user")
? ? public List<User> findAllUser();
? ? ?@Select("select * from user limit #{start},#{count} ")
? ? public List<User> listByPage(@Param("start") int start, @Param("count")int count);
? ? ?@Select("select count(*) from user")
? ? public int count();
? ? }
二 配置SqlMapConfig.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>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="賬號(hào)" />
<property name="password" value="密碼" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.yuyi.mapper.UserMapper"/>
</mappers>
</configuration>
三 測(cè)試
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.yuyi.mapper.UserMapper;
import com.yuyi.pojo.User;
import com.yuyi.util.SqlSessionFactoryUtil;
public class UserTest {
@Test
public void testGetUserById() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=userMapper.getUserById(27);
System.out.println(user);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testAddUser() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=new User();
user.setUsername("xxx");
userMapper.addUser(user);
}
@Test
public void testDeleteUser() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
userMapper.deleteUser(127);
}
@Test
public void testFindAllUser() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> listUser=userMapper.findAllUser();
for (User user : listUser) {
System.out.println(user.getUsername());
}
}
@Test
public void testListByPage() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<User> listUser=userMapper.listByPage(2, 100);
for (User user : listUser) {
System.out.println(user.getUsername());
}
sqlSession.commit();
sqlSession.close();
}
@Test
public void testCount() {
SqlSessionFactory sessionFactory=SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession sqlSession=sessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
int count=userMapper.count();
System.out.println("總數(shù)為:"+count);
sqlSession.commit();
sqlSession.close();
}
}
四 DTD文件的配置
window——preferences——XML——XML Catalog——Add
配置好mapper.dtd和config.dtd后再重新打開后就會(huì)有相應(yīng)的提示
五 配置文件
environments環(huán)境
MyBatis可以配置多種環(huán)境称龙,比如開發(fā)、測(cè)試和生
產(chǎn)環(huán)境需要有不同的配置。
? 每種環(huán)境使用一個(gè)environment標(biāo)簽進(jìn)行配置并指
定唯一標(biāo)識(shí)符
? 可以通過(guò)environments標(biāo)簽中的default屬性指定
一個(gè)環(huán)境的標(biāo)識(shí)符來(lái)快速的切換環(huán)境
environment-指定具體環(huán)境
id:指定當(dāng)前環(huán)境的唯一標(biāo)識(shí)
? transactionManager、和dataSource都必須有
transactionManager
type: JDBC | MANAGED | 自定義
– JDBC:使用了 JDBC 的提交和回滾設(shè)置,依賴于從數(shù)
據(jù)源得到的連接來(lái)管理事務(wù)范圍。
JdbcTransactionFactory
– MANAGED:不提交或回滾一個(gè)連接、讓容器來(lái)管理
事務(wù)的整個(gè)生命周期(比如 JEE 應(yīng)用服務(wù)器的上下
文)捌袜。 ManagedTransactionFactory
– 自定義:實(shí)現(xiàn)TransactionFactory接口,type=全類名/
別名
dataSource
type: UNPOOLED | POOLED | JNDI | 自定義
– UNPOOLED:不使用連接池炸枣,
UnpooledDataSourceFactory
– POOLED:使用連接池虏等, PooledDataSourceFactory
– JNDI: 在EJB 或應(yīng)用服務(wù)器這類容器中查找指定的數(shù)
據(jù)源
– 自定義:實(shí)現(xiàn)DataSourceFactory接口,定義數(shù)據(jù)源的
獲取方式适肠。
? 實(shí)際開發(fā)中我們使用Spring管理數(shù)據(jù)源霍衫,并進(jìn)行
事務(wù)控制的配置來(lái)覆蓋上述配置
六 SqlSession
SqlSession 的實(shí)例不是線程安全的,因此是不能
被共享的侯养。
? SqlSession每次使用完成后需要正確關(guān)閉敦跌,這個(gè)
關(guān)閉操作是必須的
? SqlSession可以直接調(diào)用方法的id進(jìn)行數(shù)據(jù)庫(kù)操
作,但是我們一般還是推薦使用SqlSession獲取
到Dao接口的代理類逛揩,執(zhí)行代理對(duì)象的方法柠傍,可
以更安全的進(jìn)行類型檢查操作
在此我向大家推薦一個(gè)架構(gòu)學(xué)習(xí)交流群。交流學(xué)習(xí)群號(hào):938837867 暗號(hào):555 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring辩稽,MyBatis惧笛,Netty源碼分析,高并發(fā)逞泄、高性能徐紧、分布式静檬、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化并级、分布式架構(gòu)等這些成為架構(gòu)師必備