1.mybatis的查询
先创建数据库
-- 创建数据库
create database mydb;
-- 使用数据库
use mydb;
-- 创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address) value('张三','666','18965423548','南阳');
insert into t_user(username,password,phone,address) value('李四','333','18754263548','许昌');
insert into t_user(username,password,phone,address) value('小美','123','18565234759','信阳');
然后配置UserDao文件
<?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="com.qi.dao.UserDao">
</mapper>
配置核心文件连接数据库
<?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>
<!--配置环境信息===就是配置连接数据库的参数
default:指定配置的环境信息的id,表示默认连接该环境
-->
<environments default="mysql">
<environment id="mysql">
<!--配置事务的处理方式:模式使用JDBC的事务处理-->
<transactionManager type="jdbc"></transactionManager>
<!--数据源的默认type设置为pooled,表示使用连接池-->
<dataSource type="pooled">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--加载mapper配置文件-->
<mappers>
<mapper class="com.qi.dao.UserDao" />
</mappers>
</configuration>
在接口UserDao中编写查询方法,然后在UserDao文件里编写查询语句
<?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="com.qi.dao.UserDao">
<!--通过select标签进行查询
id:映射接口的方法名
parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
resultType:指定返回值的类型
-->
<select id="selectAll" resultType="com.qi.bean.User">
select * from t_user;
</select>
</mapper>
然后在测试类中进行测试
public class UserTest {
InputStream stream=null;//字节输入流
SqlSessionFactoryBuilder builder=null;//构造器对象
SqlSessionFactory factory=null;//工厂对象
SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作
UserDao userDao=null;//接口对象
@Before
public void init() throws IOException {
//1.加载核心配置文件的字节输入流
stream = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
builder=new SqlSessionFactoryBuilder();
//3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
factory=builder.build(stream);
//4.通过工厂对象获取SqlSession对象----执行JDBC操作的
sqlSession=factory.openSession();
//5.通过SqlSession对象获取接口对应的代理对象
userDao=sqlSession.getMapper(UserDao.class);
}
@Test
public void testSelectAll() throws IOException {
//6.通过代理对象执行查询方法
List<User> userList = userDao.selectAll();
//7.遍历集合
for (User user : userList) {
System.out.println(user);
}
}
@After
public void distory() throws IOException {
//增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
sqlSession.commit();
sqlSession.close();
stream.close();
}
}
然后查询结果
2.mybatis的增加
在UserDao接口里进行编写添加方法
public interface UserDao {
/**
* 查询所有用户信息
*
*/
int add(User user);
}
然后在UserDao文件里进行编写添加语句
<?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="com.qi.dao.UserDao">
<!--通过select标签进行查询
id:映射接口的方法名
parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
resultType:指定返回值的类型
-->
<insert id="add" parameterType="com.qi.bean.User">
insert into t_user(username,password,phone,address) values(#{username},#{password},#{phone},#{address});
</insert>
</mapper>
在测试类里测试
public class UserTest {
InputStream stream=null;//字节输入流
SqlSessionFactoryBuilder builder=null;//构造器对象
SqlSessionFactory factory=null;//工厂对象
SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作
UserDao userDao=null;//接口对象
@Before
public void init() throws IOException {
//1.加载核心配置文件的字节输入流
stream = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
builder=new SqlSessionFactoryBuilder();
//3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
factory=builder.build(stream);
//4.通过工厂对象获取SqlSession对象----执行JDBC操作的
sqlSession=factory.openSession();
//5.通过SqlSession对象获取接口对应的代理对象
userDao=sqlSession.getMapper(UserDao.class);
}
@Test
public void testadd() throws IOException {
User user=new User();
user.setUsername("mybatis");
user.setPassword("333");
user.setPhone("110");
user.setAddress("github");
//通过代理对象执行查询方法
int n = userDao.add(user);
if (n>0){
System.out.println("添加成功!");
}
}
@After
public void distory() throws IOException {
//增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
sqlSession.commit();
sqlSession.close();
stream.close();
}
}
添加结果:
3.mybatis的删除
在UserDao接口里进行编写删除方法
public interface UserDao {
/**
* 查询所有用户信息
*
*/
int delete(int uid);
}
然后在UserDao文件里进行编写删除语句
<?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="com.qi.dao.UserDao">
<!--通过select标签进行查询
id:映射接口的方法名
parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
resultType:指定返回值的类型
-->
<delete id="delete" parameterType="int">
delete from t_user where uid=#{uid};
</delete>
</mapper>
在测试类里进行测试
public class UserTest {
InputStream stream=null;//字节输入流
SqlSessionFactoryBuilder builder=null;//构造器对象
SqlSessionFactory factory=null;//工厂对象
SqlSession sqlSession=null;//sqlSession对象,用来完成jdbc操作
UserDao userDao=null;//接口对象
@Before
public void init() throws IOException {
//1.加载核心配置文件的字节输入流
stream = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
builder=new SqlSessionFactoryBuilder();
//3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
factory=builder.build(stream);
//4.通过工厂对象获取SqlSession对象----执行JDBC操作的
sqlSession=factory.openSession();
//5.通过SqlSession对象获取接口对应的代理对象
userDao=sqlSession.getMapper(UserDao.class);
}
@Test
public void testdelete(){
int n = userDao.delete(6);
if (n>0){
System.out.println("删除成功");
}
}
@After
public void distory() throws IOException {
//增删改是数据库完成的操作,增删改会把数据更新到缓存中,需要显示的执行提交操作,才会更新到数据库中
sqlSession.commit();
sqlSession.close();
stream.close();
}
}
测试结果: