mybatis 第一个程序---用户查询

xiaoxiao2021-02-27  203

需求:

1.查询一个用户

2.查询多个用户(List)

Mybatis开发步骤:

编写SqlMapConfig.xml配置文件(配置数据源和mapper映射文件)

编写mapper.xml映射文件,在里面编写statement(包括sql语句,输入和输出,参数类型)

编写程序

获取SqlSessionFactory

通过SqlSessionFactory获取SqlSession

通过SqlSession操作数据库(调用上面定义的statement)

第一步:config/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> <!-- 配置数据源 --> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 配置mapper映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers> </configuration>

加入config/log4j.properties可以在控制台上打印sql语句出来

第二步:创建实体类User.java

第三步:config/sqlmap/User.xml下配置User.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动态代理方法,这里就需要配置mapper接口地址--> <mapper namespace="test"> <!-- 根据用户的ID查询一条记录(返回单条记录) select标签表示sql查询,内容会封装到Mapped Statement中, 可以将这个select标签称为一个Statement id属性:Statement的唯一标识 #{}:表示一个占位符,可以避免sql注入 ${}:表示一个拼接符 parameterType:表示输入的类型,就是占位符要输入什么类型 resultType:表示输出的结果集的类型,select查询的字段名和resultType属性名一致,才能映射成功 #{id}:id表示parameter输入参数的变量 --> <select id="findUserById" parameterType="int" resultType="com.mo.pojo.User"> SELECT * FROM USER WHERE id = #{id} </select> <!-- 根据名字查询用户列表(返回List集合) 不管返回的结果是几条,resultType都是指定单条记录映射java对象的类型 ${}:表示sql拼接符,相当于sql字符串的拼接,无法避免sql注入 ${value}:value表示parameter输入参数的变量,使用${},变量名必须使用value 直接将value拼接到sql中,value不作任何的修饰 '%${value}%' : 可以这样使用修饰 客户端输入 张 sql会拼接为 %张% --> <select id="findUserListByName" parameterType="String" resultType="com.mo.pojo.User"> SELECT * FROM USER WHERE username LIKE '%${value}%' </select> </mapper>

第四步:测试单元

package com.mo; import java.io.IOException; import java.io.InputStream; import java.util.List; 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 org.junit.Test; import com.mo.pojo.User; public class MybatisTest { @Test public void test() throws IOException{ //1.加载配置文件 String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //2.根据配置文件创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3.根据SqlSessionFactory创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //4.查询返回多条 /** * 通过sqlSession的API对数据库进行操作 * 第一个参数是statement:指定mapper映射文件中statement的id * 指定的时候加上statement所属的空间名称 * 第二个就是给参数赋值 * * selectOne返回的是单条的记录,如果select返回多条记录(list集合),selectOne会报错 * * 返回值得类型就是映射文件中的resultType */ User user = sqlSession.selectOne("test.findUserById", 1); List<User> list = sqlSession.selectList("test.findUserListByName","张"); System.out.println(list.size()); System.out.println(user); //5.关闭sqlSession sqlSession.close(); } }

转载请注明原文地址: https://www.6miu.com/read-10583.html

最新回复(0)