工具: 环境: 步骤: 准备工作先做好,导jar包,需要的项目结构 2.将需要的包结构建好 如图: 3.配置文件中,配置数据库相关信息,引入mapper.xml文件 准备工作已做好,开始做基础的增删改查 单个增加 测试是否成功 单个插入完成 UserMapper.java userMapper.xml 测试 批量插入完成 未完待更新 UserMapper.java userMapper.xml UserMapperTest.java 结果: UserMapper.java userMapper.xml 测试 结果: UserMapper.java userMapper.xml UserMapperTest.java 结果: UserMapper.java userMapper.xml 测试 UserMapper.java userMapper.xml 测试 UserMapper.java userMapper.xml 测试 UserMapper.java userMapper.xml 测试
MyBatis做简单的增删改查,超级详细,保证一看就会
idea
mysql
1.导入相关的jar包
2.将需要的包结构建好
3.配置文件中,配置数据库相关信息,引入mapper.xml文件
4.写sql语句
5.测试
1.导入相关的jar包
这里通过maven来管理jar包,在pom.xml中进行配置
需要的jar包
mysql的包
mybayis的包
junit的测试包<?xml version="1.0" encoding="UTF-8"?> <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fh</groupId> <artifactId>mybaits_first</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>mybaits_first</name> <!-- FIXME change it to the project's website --> <url>https://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <spring.version>4.1.7.RELEASE</spring.version> <hibernate.version>4.3.11.Final</hibernate.version> </properties> <dependencies> <!-- 配置mybaits--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency>
<!-- mysql数据库的驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!-- java单元测试框架 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
</dependencies>
1.maper类
2.实体类
3.SqlMapConfig.xml文件,里边配置数据库相关的,包括引入相关的mapper文件
4.相关的mapper.xml文件
5.测试类
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <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/1908a" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <!--引入映射文件--> <mapper resource="mapper/userMapper.xml"/> </mappers> </configuration>
增加
UserMapper.java中,写一个新增的有参数,无返回值的方法
userMapper.xml文件
超级全面的注释,看不懂多看几遍,绝对明白了
userMapper.xml文件代码<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 为这个mapper指定一个唯一的namespace, namespace的值习惯上设置成【包名+sql映射文件名】,这样就能够保证namespace的值是唯一的 例如:namespace="org.fh.mapper.dept.DeptMapper"就是org.fh.mapper.dept(包名)+DeptMapper(DeptMapper.xml文件去除后缀) --> <mapper namespace="com.fh.mapper.UserMapper"> <!--单个新增--> <!--insert标签:定义一个插入方法 id:sql语句唯一标识 parameterType:指定传入参数类型(对应javaBean类型,写原始型会自动包装为包装类) resultType:返回结果类型 #{}:{}中默认是model类中的属性名,占位符,起到占位作用,如果传入的是原始型,那么括号中的变量名称可以随意定义 --> <insert id="insertUser" parameterType="com.fh.model.User" useGeneratedKeys="true" keyProperty="id"> <!-- 执行 LAST_INSERT_ID,返回自增的主键 keyProperty:keyProperty中的值与model中的id属性名保持一致 order:相当于insert语句的执行顺序,在insert前执行时before, 之后是afterresultType:keyProperty中属性的类型 可以不写 --> <selectKey resultType="int" order="AFTER" keyProperty="userId">select LAST_INSERT_ID() </selectKey> <!-- t_user_idea数据库表名 (user_id,user_name,user_sex)与数据库字段名一样 (#{userId},#{username},#{sex}与实体类中的属性名保持一致--> insert into t_user_idea(user_id,user_name,user_sex) values (#{userId},#{username},#{sex}) </insert> </mapper>
UserMapperTest.java@Test public void insetUserTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); // //进行赋值 User user = new User(); // dept.setDeptId(1); user.setUsername("部门22"); user.setSex(1); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 int count = sqlSession.insert("com.fh.mapper.UserMapper.insertUser",user); //手动提交事务,因为mysql自动提交时间不确定。 sqlSession.commit(); System.out.println("插入数据条数:"+count); //关闭session会话 sqlSession.close(); }
批量插入
//批量插入 int batchInsertUser(List<User> userList);
<!--批量新增--> <insert id="batchInsertUser" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> <!-- 执行 LAST_INSERT_ID,返回自增的主键 keyProperty: order:相当于insert语句的执行顺序,在insert前执行时before, 之后是afterresultType:keyProperty中属性的类型 可以不写 --> insert into t_user_idea(user_id,user_name,user_sex) values <foreach collection="list" item="user" index="index" separator=","> (#{user.userId},#{user.username},#{user.sex}) </foreach> </insert>
UserMapperTest.java/** * 批量插入 * @throws IOException */ @Test public void batchInsertUserTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); // //进行赋值 List<User> userList = new ArrayList<>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setUsername("username" + i); user.setSex(1); userList.add(user); } //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 int count = sqlSession.insert("com.fh.mapper.UserMapper.batchInsertUser",userList); //手动提交事务,因为mysql自动提交时间不确定。 sqlSession.commit(); System.out.println("插入数据条数:"+count); //关闭session会话 sqlSession.close(); }
通过id查询数据
//通过ID进行查询 User findUserById(Integer userId);
<!--根据id查询信息--> <!--select标签:定义一个查询方法 id:sql语句唯一标识 parameterType:指定传入参数类型(对应javaBean类型,写原始型会自动包装为包装类) resultType:返回结果类型 #{}:{}中默认是model类中的属性名,占位符,起到占位作用,如果传入的是原始型,那么括号中的变量名称可以随意定义 --> <select resultType="com.fh.model.User" parameterType="integer" id="findUserById"> select user_id as userId,user_name as username,user_sex as sex from t_user_idea where user_id = #{userId} </select>
@Test public void findUserByIdTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 //这里调用的是selectOne方法,只能查询一条指定的数据, // 如果用它查询多条数据,会报异常(查询多条要用selectList) User user = sqlSession.selectOne("com.fh.mapper.UserMapper.findUserById",11); System.out.println(user); //关闭session会话 sqlSession.close(); }
查询所有信息
//查询所有信息 User findAllUser();
<!--查询所有信息--> <select resultType="com.fh.model.User" id="findAllUser"> select user_id as userId,user_name as username,user_sex as sex from t_user_idea </select>
UserMapperTest.java /** * 查询所有信息 * @throws IOException */ @Test public void findAllUserTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 //这里调用的是selectOne方法,只能查询一条指定的数据, // 如果用它查询多条数据,会报异常(查询多条要用selectList) List<User> userList = sqlSession.selectList("com.fh.mapper.UserMapper.findAllUser"); for (User user:userList) { System.out.println(user); } //关闭session会话 sqlSession.close(); }
通过username进行模糊查询
//通过name进行模糊查询 User findUserByUserName(String username);
<!--根据username模糊查询User信息--> <select id="findUserByUserName" resultType="com.fh.model.User" parameterType="String"> <!-- 错误1: 如果使用select * from 必须保证数据库字段名和属性名保持一样 select * from t_dept where dept_name like concat("%",#{deptName},"%") 错误2: 数据库字段名和属性名不一样:通过as进行设置 select dept_id,dept_name,dept_sex from t_dept where dept_name like concat("%",#{deptName},"%") --> select user_id as userId,user_name as username,user_sex as sex from t_user_idea where user_name like concat("%",#{username},"%") </select>
/** * 通过name进行模糊查询 * @throws IOException */ @Test public void findUserByUserNameTest() throws IOException { String resource="SqlMapConfig.xml"; //读取配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); //连接上数据库 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); //开启会话 SqlSession sqlSession = factory.openSession(); //第一个参数定位带ClothingMapper.xml的findClothingByName方法 //第二个参数的是findClothingByName方法的参数 List<User> userList = sqlSession.selectList("com.fh.mapper.UserMapper.findUserByUserName","2"); for (User user:userList) { System.out.println(user); } System.out.println(userList.size()); }
通过username和sex进行条件查询
//通过username和sex进行模糊查询 User queryUserByNameAndSexList(User user);
<!--条件查询--> <select id="queryUserByNameAndSexList" parameterType="com.fh.model.User" resultType="com.fh.model.User"> <!-- 错误1: 如果使用select * from 必须保证数据库字段名和属性名保持一样,这样子是查不出来数据的 select * from t_dept where dept_name like concat("%",#{deptName},"%") 错误2: 数据库字段名和属性名不一样:通过as进行设置,如下就是错误的,查不出来数据 select dept_id,dept_name,dept_sex from t_dept where dept_name like concat("%",#{deptName},"%") --> select user_id as userId,user_name as username,user_sex as sex from t_user_idea <where> <if test=" username != null and username != '' "> and user_name like concat('%',#{username},'%') </if> <if test="sex != null"> and user_sex = #{sex} </if> </where> </select>
UserMapperTest.java /** * 通过username和sex进行条件查询 * @throws IOException */ @Test public void queryUserByNameAndSexListTest() throws IOException { String resource="SqlMapConfig.xml"; //读取配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); //连接上数据库 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); //开启会话 SqlSession sqlSession = factory.openSession(); //模糊查询的条件 User user = new User(); user.setUsername("1"); user.setSex(1); //第一个参数定位带ClothingMapper.xml的findClothingByName方法 //第二个参数的是findClothingByName方法的参数 List<User> userList = sqlSession.selectList("com.fh.mapper.UserMapper.queryUserByNameAndSexList",user); for (User user1:userList) { System.out.println(user1); } System.out.println(userList.size()); }
删除数据
//通过ID删除数据 void deleteUserById(Integer userId);
<!--删除数据--> <delete id="deleteUserById" parameterType="int"> delete from t_user_idea where user_id = #{userId} </delete>
UserMapperTest.java /** * 删除 * @throws IOException */ @Test public void deleteDeptTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 //这里调用的是selectOne方法,只能查询一条指定的数据, // 如果用它查询多条数据,会报异常(查询多条要用selectList) sqlSession.delete("com.fh.mapper.UserMapper.deleteUserById",8); sqlSession.commit(); //关闭session会话 sqlSession.close(); }
修改
//修改 void updateUser(User user);
<!--修改数据--> <update id="updateUser" parameterType="com.fh.model.User"> update t_user_idea set user_name=#{username},user_sex=#{sex} where user_id = #{userId} </update>
UserMapperTest.java /** * 修改 * @throws IOException */ @Test public void updateDeptTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 User user = new User(); //必须写id,这样才可以修改 user.setUserId(7); user.setUsername("张三"); user.setSex(0); sqlSession.update("com.fh.mapper.UserMapper.updateUser",user); sqlSession.commit(); //关闭session会话 sqlSession.close(); }
批量删除
//批量删除 int deleteUserByIds(List<Integer> idList);
<!--批量删除--> <delete id="deleteUserByIds" parameterType="list"> delete from t_user_idea where user_id in <!-- open:循环开始拼接的字符 close:循环结束拼接的字符 --> <foreach collection="list" item="id" open="(" close=")" separator=","> #{id} </foreach> </delete>
UserMapperTest.java /** * 批量删除 */ @Test public void deleteUserByIdsTest() throws IOException { //从项目的resources文件夹,获取配置信息(url,username,password,mysqlDriver,ClothingMapper.xml文件路径) String resource="SqlMapConfig.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); //创建工厂(连接mysql数据库) SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //通过工厂创建会话 SqlSession sqlSession=factory.openSession(); ArrayList<Integer> idList = new ArrayList<>(); idList.add(13); idList.add(14); idList.add(15); //第一个参数:所调用的sql语句:namespace+‘.’+SqlID //第二个参数:传入的参数 //int row = sqlSession.deleteUserByIds("com.fh.mapper.UserMapper.deleteUserById",idList); int row = sqlSession.delete("com.fh.mapper.UserMapper.deleteUserByIds",idList); sqlSession.commit(); //关闭session会话 sqlSession.close(); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算