目录
一、Mybatis的入门。
(1)Mybatis的简介。
(2)Mybatis的快速入门。
(2.1)快速入门。
(2.2)UserMapper.xml文件。
(2.3)sqlMapConfig.xml文件。
(2.4)测试类代码。
(3)MyBatis的映射文件概述。
(4)MyBatis的增删改查操作。
(4.1)查询操作。
(4.2)插入操作。
(4.3)修改操作。
(4.4)删除操作。
(4.5)增删改查映射配置知识小结。
(5)MyBatis的核心配置文件概述。
(5.1)mybatis核心配置文件层级关系。
(5.2)mybatis常用配置解析。
(5.3)知识小结。
(6)MyBatis的相应API。
(7) MyBatis的Dao层实现。
(7.1)传统开发方式。
(7.2)代理开发模式。
(7.3)dao层实现的两种方式知识小结。
(8)MyBatis映射文件深入。
(8.1)动态sql语句。
(8.2)sql语句的抽取。
(8.3)mybatis映射文件配置知识小结。
(9)MyBatis核心配置文件深入。
(9.1)typeHandlers(类型处理器)标签。
(9.2)plugins(插件)标签。
(9.3)MyBatis核心配置文件常用标签小结。
一、Mybatis的入门。
(1)Mybatis的简介。
Mybatis是一个持久层框架。
(2)Mybatis的快速入门。
(2.1)快速入门。
(2.2)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">
<mapper namespace="userMapper">
<select id="findAll" resultType="domain.User">
select * from user
</select>
</mapper>
(2.3)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>
<!--数据源环境-->
<environments default="development"><!--默认使用下面id为development的环境-->
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="tan"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<mapper resource="mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
(2.4)测试类代码。
package test;
public class MyBatisTest {
@Test
public void test1() throws IOException {
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作
List<User> userList = sqlSession.selectList("userMapper.findAll");
//5.打印数据
System.out.println(userList);
//6.释放资源
sqlSession.close();
}
}
(3)MyBatis的映射文件概述。
(4)MyBatis的增删改查操作。
(4.1)查询操作。
<?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="userMapper">
<!--1、查询操作-->
<select id="findAll" resultType="domain.User">
select * from user
</select>
<!--2、插入操作-->
<insert id="save" parameterType="domain.User">
insert into user values (#{id},#{username},#{password})
</insert>
<!--3、修改操作-->
<update id="update" parameterType="domain.User">
update user set username=#{username},password=#{password} where id = #{id}
</update>
<!--4、删除操作-->
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
</mapper>
@Test
//查询操作
public void test1() throws IOException {
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作
List<User> userList = sqlSession.selectList("userMapper.findAll");
//5.打印数据
System.out.println(userList);
//6.释放资源
sqlSession.close();
}
(4.2)插入操作。
<?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="userMapper">
<!--2、插入操作-->
<insert id="save" parameterType="domain.User">
insert into user values (#{id},#{username},#{password})
</insert>
</mapper>
@Test
//插入操作
public void test2() throws IOException {
//模拟user对象
User user = new User();
//user.setId(-1);//设置为0(不设置,默认为0)则自增,设置其他不自增(负数,整数,导致都不会自增)
user.setUsername("asss");
user.setPassword("abc");
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作 参数:namespace+id(命名空间.id)
sqlSession.insert("userMapper.save",user);
//5.mybatis执行更新操作,提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
}
(4.3)修改操作。
<?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="userMapper">
<!--3、修改操作-->
<update id="update" parameterType="domain.User">
update user set username=#{username},password=#{password} where id = #{id}
</update>
</mapper>
@Test
//修改操作
public void test3() throws IOException {
//模拟user对象
User user = new User();
user.setId(-1);
user.setUsername("lucy");
user.setPassword("123");
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作 参数:namespace+id(命名空间.id)
sqlSession.update("userMapper.update",user);
//5.mybatis执行更新操作,提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
}
(4.4)删除操作。
<?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="userMapper">
<!--4、删除操作-->
<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
</mapper>
@Test
//删除操作
public void test4() throws IOException {
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作 参数:namespace+id(命名空间.id)
sqlSession.delete("userMapper.delete",8);
//5.mybatis执行更新操作,提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
}
(4.5)增删改查映射配置知识小结。
(5)MyBatis的核心配置文件概述。
(5.1)mybatis核心配置文件层级关系。
(5.2)mybatis常用配置解析。
注意:<typeAliases>标签放在核心文件中,但是别名在映射文件中使用。
<?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"><!–默认使用下面id为development的环境–>
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="tan"/>
</dataSource>
</environment>
</environments>-->
<!--通过properties标签加载外部properties文件-->
<properties resource="jdbc.properties"></properties>
<!--定义别名就,这标签不能随便放,dtd约束的标签有顺序要求-->
<typeAliases>
<typeAlias type="domain.User" alias="user"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--加载映射文件-->
<mappers>
<mapper resource="mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
(5.3)知识小结。
(6)MyBatis的相应API。
public void test1() throws IOException {
//1.获取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3.获取session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.执行操作
List<User> userList = sqlSession.selectList("userMapper.findAll");
//5.打印数据
System.out.println(userList);
//6.释放资源
sqlSession.close();
}
(7) MyBatis的Dao层实现。
(7.1)传统开发方式。
(7.2)代理开发模式。
(1)接口。
package dao;
public interface UserMapper {
public List<User> findAll() throws IOException;
public User findById(int id);
}
(2)映射文件的配置。
<?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="dao.UserMapper">
<!--1、查询操作-->
<select id="findAll" resultType="domain.User">
select * from user
</select>
<!--根据id进行查询-->
<select id="findById" parameterType="int" resultType="domain.User">
select * from user where id = #{id}
</select>
</mapper>
(3)测试代理模式方式的代码。
package service;
public class ServiceDemo {
public static void main(String[] args) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// List<User> all = mapper.findAll();
// System.out.println(all);
User user = mapper.findById(1);
System.out.println(user);
}
}
(7.3)dao层实现的两种方式知识小结。
(8)MyBatis映射文件深入。
(8.1)动态sql语句。
package mapper;
public interface UserMapper {
public List<User> findByCondition(User user);
public List<User> findByIds(List<Integer> ids);
}
<?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="mapper.UserMapper">
<!--sql语句抽取-->
<sql id="selectUser">select * from user</sql>
<select id="findByCondition" resultType="domain.User" parameterType="domain.User">
<!--引用sql语句-->
<include refid="selectUser"></include>
/*select * from user*/
<where>
<if test="id!=0">
and id = #{id}
</if>
<if test="username!=null">
and username = #{username}
</if>
<if test="password!=null">
and password = #{password}
</if>
</where>
</select>
<select id="findByIds" parameterType="list" resultType="domain.User">
select * from user
<where>
<!--select * from user where id in(1,2,3)-->
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
</mapper>
(8.2)sql语句的抽取。
(8.3)mybatis映射文件配置知识小结。
(9)MyBatis核心配置文件深入。
(9.1)typeHandlers(类型处理器)标签。
类型处理器的作用有两个:java类型 《——》 数据库类型。(自动根据类型转换)
1.类型转换器类:
package handler;
public class DateTypeHandler extends BaseTypeHandler<Date> {
@Override
//将java类型 转换成 数据库需要的类型
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
//i为参数的位置(比如插入数据中的第几个数据)
long time = date.getTime();
preparedStatement.setLong(i,time);
}
@Override
//将数据库中类型 转换成 java类型
public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
//String参数 要转换的字段名称
//ResultSet 查询出的结果集
//获得结果集中需要的数据(long)转换成Date类型
long aLong = resultSet.getLong(s);
Date date = new Date(aLong);
return date;
}
@Override
//将数据库中类型 转换成 java类型
public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
//i参数 要转换的字段位置
//获得结果集中需要的数据(long)转换成Date类型
long aLong = resultSet.getLong(i);
Date date = new Date(aLong);
return date;
}
@Override
//将数据库中类型 转换成 java类型
public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
//i参数 要转换的字段位置
//获得结果集中需要的数据(long)转换成Date类型
long aLong = callableStatement.getLong(i);
Date date = new Date(aLong);
return date;
}
}
2.映射配置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">
<mapper namespace="mapper.UserMapper">
<insert id="save" parameterType="user">
insert into user values(#{id},#{username},#{password},#{birthday})
</insert>
</mapper>
3.核心配置xml文件:
<!--注册类型处理器-->
<typeHandlers>
<typeHandler handler="handler.DateTypeHandler"></typeHandler>
</typeHandlers>
4.测试方法代码:
4.1(Date类型——》bigint类型)即java类型 ——》 数据库类型。
public void test1() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//创建user
User user = new User();
user.setUsername("ceshi");
user.setPassword("abc");
user.setBirthday(new Date());
//执行保存操作
mapper.save(user);
sqlSession.commit();
sqlSession.close();
}
4.2(bigint类型——Date类型)即java类型 《—— 数据库类型。
public void test2() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//执行查询操作
User user = mapper.findById(23);
System.out.println(user);
sqlSession.close();
}
(9.2)plugins(插件)标签。
1.导入坐标。
注意:这两个坐标的版本容易出现版本不兼容,改了很可能出现转换类型异常。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<dependencies>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>3.7.5</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.1</version>
</dependency>
</dependencies>
</project>
2.核心配置xml文件:
在MyBatis中,配置分页插件需要指定数据库的方言(Dialect),以便插件能够正确地生成SQL语句并进行分页查询。不同的数据库有不同的方言实现,例如MySQL、Oracle、SQL Server等。(有的版本可能不需要配置方言(或许配置了就出现错误),但是我用的版本是必须要的,不然报错)
<!--配置分页助手插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!--指定方言-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
3.测试方法代码:
public void test3() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//设置分页相关参数,当前页+和每页显示的条数
PageHelper.startPage(2,4);
//执行查询全部操作
List<User> userList = mapper.findAll();
System.out.println(userList);
//获取分页相关参数
PageInfo<User> pageInfo = new PageInfo<>(userList);
System.out.println("当前页:"+pageInfo.getPageNum());
System.out.println("每页显示条数:"+pageInfo.getPageSize());
System.out.println("总条数:"+pageInfo.getTotal());
System.out.println("总页数:"+pageInfo.getPages());
System.out.println("上一页:"+pageInfo.getPrePage());
System.out.println("下一页:"+pageInfo.getNextPage());
System.out.println("是否是第一页:"+pageInfo.isIsFirstPage());
System.out.println("是否是最后一页:"+pageInfo.isIsLastPage());
sqlSession.close();
}
文章来源:https://www.toymoban.com/news/detail-428481.html
(9.3)MyBatis核心配置文件常用标签小结。
文章来源地址https://www.toymoban.com/news/detail-428481.html
到了这里,关于28.Mybatis的入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!