D-1MyBatis的环境配置信息。在mybatis-config.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"> <!-- 注释的快捷方式: ctrl+shift+/ --> <!--添加配置标签--> <configuration> <!--将database.properties文件加载至该主配置文件进行统一管理--> <properties resource="database.properties"></properties> <!--设置项目的运行环境--> <!--注意:default标签上填写的内容必须要和id属性的内容一致--> <environments default="development"> <environment id="development"> <!--配置操作数据库的事务管理器--> <transactionManager type="JDBC"></transactionManager> <!--配置数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="${driver}"></property> <property name="url" value="${url}"></property> <property name="username" value="${user}"></property> <property name="password" value="${password}"></property> </dataSource> </environment> </environments> <!--将映射文件导入--> <mappers> <mapper resource="com/book/dao/Mapper.xml"></mapper> <!-- <mapper resource="com.book.dao.WorkerMapper"></mapper> <mapper resource="com.book.dao.BookMapper"></mapper>--> </mappers> <!-- <mappers> <mapper resource="com.book.dao.WorkerMapper"></mapper> </mappers>--> </configuration
D-2MyBatis连接数据库的插件配置信息。database.properties文件中。
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8 user=root password=@2580A369b369@
D-3MyBatisDao层中对数据的增删改查。Mapper.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"> <!--suppress ALL --> <!--将映射文件导向接口文件中去 产生一对应的关系--> <mapper namespace="com.book.dao.IBookDao"> <!--@1 查询book表中的数量--> <select id="getCount" resultType="int" > select count(*) from book </select> <!--@2转入一个参数的书名--> <select id="getNameId" parameterType="int" resultType="String" > select name from book where id=#{id} </select> <!--@3查询所有图书信息--> <select id="selectAll" resultType="Map"> select *from book </select> <!--转参数加多条数据--> <!--将所有图书信息id降序排列 desc从大到小 升序 asc--> <select id="selectOrder" resultType="Map"> select *from book order by id desc </select> <!--<select id="selectAll" resultType="java.util.Map"></select>--> <!-- 增 如果想取除字段名 将整张表的字段名加上--> <insert id="addBook" parameterType="Map"> insert into book values (#{id},#{name},#{author},#{price},#{count}) </insert> <!--修改书籍标号图书价格为134--> <update id="updateBook" parameterType="Map"> update book set price=#{price},count=#{count} where id=#{id} </update> <!--删除--> <delete id="deleteBook" parameterType="Map"> delete from book where id between #{id1} and #{id2} </delete> <!--查询语句内容利用接口--> <!--查询作者为曹雪芹 价格为100 的书名--> <!--如果sql需要转入两个条件 parameterType=""Map集合或者自定义实体类 --> <select id="getBookName1" resultType="String" parameterType="Map"> select name from book where author=#{author} and price=#{price} </select> <select id="getBookName3" resultType="Map"> select id, name ,count from book where author=#{author} and price=#{price} </select> </mapper>
D-4MyBatis的接口中。
package com.book.dao; iport org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; public interface IBookDao { /*创建接口*/ /*定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致*/ /*定义的方法名称一定要与执行sql语句的id属性中的名称一致*/ /*方法中的形参数对应映射文件中parameterType=""的参数内容*/ /*<select id="getCount" resultType="int">*/ /*定义查询书籍数量的的方法名称*/ int getCount(); /*转入一个参数的书名-*/ /*<select id="getNameId" parameterType="int" resultType="String" >*/ String getNameId(int id); /*注意查询多条数据的时候,一定是List<Map>或者自定义实体类*/ /*but List<Map<String, Object>>*/ List<Map<String, Object>> selectAll(); /*<!--将所有图书信息id降序排列 desc从大到小 升序 asc-->*/ /* <select id="selectOrder" resultType="Map">*/ List<Map<String, Object>> selectOrder(); // <insert id="addBook" parameterType="Map"> int addBook(Map<String, Object> Map); //<delete id="deleteBook" parameterType="Map"> int deleteBook(Map<String, Object> Map); // <update id="updateBook" parameterType="Map"> int updateBook(Map<String, Object> Map); /** * @param Map * @return */ /*创建接口*/ /*定义方法的返回值的类型必须与映射文件 resultType属性数据类型一致*/ /*定义的方法名称一定要与执行sql语句的id属性中的名称一致*/ /*方法中的形参数对应映射文件中parameterType=""的参数内容*/ //<select id="getBookName1" resultType="String" parameterType="Map"> String getBookName1(Map<String, Object> Map);
D-5MyBatis测试类。Test的测试类。
package com.book.test; import com.book.dao.IBookDao; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; public class BookTest { public SqlSession ss = null; // public SqlSession dao=null; public void init() { // 将主配置文件转换成输入流 try { /*四句合并成两句*/ InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); ss = new SqlSessionFactoryBuilder().build(is).openSession(); } catch (IOException e) { e.printStackTrace(); } } @Test public void one() { init(); IBookDao dao = ss.getMapper(IBookDao.class); int count = dao.getCount(); System.out.println("查序书籍的数量为" + count + "本"); } @Test //查书籍名称 public void two() { init(); IBookDao dao = ss.getMapper(IBookDao.class); String name = dao.getNameId(11); System.out.println("查序书籍的数量为" + name); } @Test public void five() { init(); IBookDao dao = ss.getMapper(IBookDao.class); List<Map<String, Object>> books = dao.selectAll(); books.forEach(map -> System.out.println(map)); } @Test public void six() { init(); IBookDao dao = ss.getMapper(IBookDao.class); List<Map<String, Object>> books = dao.selectOrder(); books.forEach(map -> System.out.println(map)); } @Test public void seven() { init(); Map<String, Object> map = new HashMap<>(); map.put("id", null); map.put("name", "AAAA"); map.put("author", "AAAA"); map.put("price", 100); map.put("count", 67); IBookDao dao = ss.getMapper(IBookDao.class); int i = dao.addBook(map); ss.commit(); if (i > 0) { System.out.println("增加成功"); } @Test public void nine() { init(); Map<String, Object> map = new HashMap<>(); map.put("id1", 100); map.put("id2", 120); IBookDao dao = ss.getMapper(IBookDao.class); int i = dao.deleteBook(map); ss.commit(); if (i > 0) { System.out.println("删除成功"); }else { System.out.println("删除失败"); } @Test public void nine() { init(); Map<String, Object> map = new HashMap<>(); map.put("id", 120); map.put("name", "gjs"); IBookDao dao = ss.getMapper(IBookDao.class); int i = dao.updateBook(map); ss.commit(); if (i > 0) { System.out.println("修改成功"); }else { System.out.println("修改失败"); } @Test public void enight() { init(); Map<String, Object> map = new HashMap<>(); map.put("author", "曹雪芹"); map.put("price", 134); IBookDao dao = ss.getMapper(IBookDao.class); String i = dao.getBookName1(map); System.out.println(i); } }
第三种方式MyBatis的注解方式:
E-1MyBatis的环境配置信息。在mybatis-config.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> --> <configuration> <!--将database.properties文件加载至该主配置文件进行统一管理--> <properties resource="database.properties"></properties> <!--设置项目的运行环境--> <!--注意:default标签上填写的内容必须要和id属性的内容一致--> <environments default="development"> <environment id="development"> <!--配置操作数据库的事务管理器--> <transactionManager type="JDBC"></transactionManager> <!--配置数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="${driver}"></property> <property name="url" value="${url}"></property> <property name="username" value="${user}"></property> <property name="password" value="${password}"></property> </dataSource> </environment> </environments> <!--将映射文件导入到此文件中--> <mappers> <mapper class="com.book.dao.IBookDo"></mapper> </mappers> </configuration>
E-2MyBatis连接数据库的插件配置信息。database.properties文件中。
//数据库的连接池
driver=com.mysql.cj.jdbc.Driver
//数据库的地址
url=jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=utf-8
//数据库的姓名
user=root
//数据库的密码
password=@2580A369b369@
E-4MyBatis的注解文件中的接口。
package com.book.dao; import com.book.entity.Book; import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; /*接口文件*/ public interface IBookDo { //查询book表中的图书数量 @Select(" select count(*) from book") //对应的方法名称 int getCount(); //查询书籍编号为2的书名 @param //转入参数的时候需要增加@Param注解 该注解中的设置的变量名需要的变量名和占位符一致 @Select("select name from book where id=#{id}") String getNameId(@Param("id") int id); //查询所有数据 返回值 List<Map<String, Object>> List<Map<Book book>> @Select(" select *from book") List<Map<String, Object>> selectAll(); // 查询书名为“人生的意义盒子”作者 价格 数量 @Select("select author,price,count,from book where name=#{name}") Map<String, Object> getBook(@Param("name") String name); //查询多个参数查序多个字段 @Select(" select name,id,count from book where author=#{author} and price=#{price}") Map<String, Object> getBookInfo(@Param("author") String author, @Param("price") int price); //查询多个参数查序多个字段方法二 @Select(" select id,name,count from book where author=#{author} and price=#{price}") Map<String, Object> getBookInfo1(Map<String, Object> map); //<!--将所有图书信息id降序排列 desc从大到小 升序 asc--> //@Select("select *from book order by id desc") //增加语句 @Insert("insert into book(name,author,price,count) values (#{name},#{author},#{price},#{count})") int addBook(Book book); //修改语句 // 2 利用mysql修改语句<update> id parameterType resultType --> @Update("update book set price=#{price},count=#{count} where id=#{id}") int updateBook(Map<String, Object> map); //删除一条语句 //@3利用mysql删除语句<delete> id parameterType resultType @Delete("delete from book ") int deleteAll(); }
E-5MyBatis测试类。Test的测试类。
package com.book.test; import com.book.dao.IBookDo; import com.book.entity.Book; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 2022/3/17 */ public class BookTest { public SqlSession ss = null; public IBookDo dao = null; public void init() { try { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // SqlSessionFactoryBuilder().build(is).openSession() ss = new SqlSessionFactoryBuilder().build(is).openSession(); dao = ss.getMapper(IBookDo.class); } catch (IOException e) { e.printStackTrace(); } } @Test public void one() { init(); int count = dao.getCount(); System.out.println("查询书籍的数量" + count + "本"); } @Test public void two() { init(); String nameId = dao.getNameId(124); System.out.println(nameId); } //查询所有的书籍信息 @Test public void tree() { init(); List<Map<String, Object>> books = dao.selectAll(); books.forEach(map -> System.out.println(map)); } @Test public void four() { init(); Map<String, Object> map = dao.getBookInfo("人生意义何在", 6); System.out.println(map); } @Test public void four1() { init(); Map<String, Object> m = new HashMap<>(); m.put("author", "人生意义何在"); m.put("price", 6); Map<String, Object> map = dao.getBookInfo1(m); System.out.println(map); } @Test public void six() { init(); // @Insert("insert into book(id,name,author) values (#{id},#{name},#{author})") Book book = new Book(0, "我的世界", "《java》", 23, 45); int i = dao.addBook(book); ss.commit(); if (i > 0) { System.out.println("增加成功"); } } @Test public void seven() { init(); Map<String, Object> map = new HashMap<>(); map.put("id", 138); map.put("price", 20); map.put("count", 1200); int i = dao.updateBook(map); ss.commit(); if (i > 0) { System.out.println("数据修改成功"); } } // 数据删除成功 @Test public void eight() { init(); int i = dao.deleteAll(); ss.commit(); if (i > 0) { System.out.println("数据删除成功"); } } }
运行结果。
上面的案例你能用今天所讲五种方案可以尝试一下。熟能生巧。多学多看多思考。如何将数据在浏览器中增删改查呢?