Mybatis中sql映射文件中的增删查改
作者:我也有鱼鱼蒸
本文主要介绍了Mybatis中sql映射文件中的增删查改,包括创建数据表、配置Maven项目、编写实体类和接口,以及mapper映射文件的增删查改操作,具有一定的参考价值,感兴趣的可以了解一下
映射文件内的增删查改
准备工作
- 准备一张数据表,用于进行数据库的相关操作。
- 新建maven工程, 导入mysql-connector-java和mybatis依赖。
- 新建一个实体类,类的字段要和数据表的数据对应
- 编写接口
- 编写mybatis主配置文件
public class User { private String name; private String gender; private int age; private String address; private String email; private String qq; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } }
<?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"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> </configuration>
public class Main { public static void main(String[] args) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml"); SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession(); } }
后续只需在接口内添加相关方法,编写mapper映射文件进行测试,后面仅展示mapper映射文件。
新增数据
插入数据的方法sqlSession.insert("mapper映射文件内insert标签的id","传入的参数"),并且例如增删改的方法需要调用commit方法进行提交。
编写sql语句时,如果输入的参数为java对象类型,#{}表示接收java对象的属性名
<insert id="add" parameterType="com.cc.UserMapper" > insert into tb_userinfo (name,gender,age,address,email,qq) values (#{name},#{gender},#{age},#{address},#{email},#{qq}); </insert>
这里将user对象作为参数传入。
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml"); SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession(); //插入数据 User user = new User("张四丰","女",25,"宁夏","1212@qq.com","987654"); sqlSession.insert("add",user); sqlSession.commit();
删除数据
根据姓名删除数据:调用sqlSession.delete方法,同时传入一个字符串。
sqlSession.delete("delete","张大2");
<delete id="delete" parameterType="String"> delete from tb_userinfo where name = #{na} </delete>
修改数据
当要传入多个参数时,除了使用类将数据封装起来,还能使用map集合作为参数传入,注意map的key值要和#{}内的值一致。
<update id="update" parameterType="map"> update tb_userinfo set gender=#{gender},address=#{address} where name=#{nam} </update>
Map<String,String> map = new HashMap<>(); map.put("gender","女"); map.put("nam","李思思"); map.put("address","四川"); sqlSession.update("update",map);
查询数据
查询所有
<select id="seleteAll" resultType="com.cc.User"> select * from tb_userinfo; </select>
List<User> users = sqlSession.selectList("seleteAll"); for(User u : users){ System.out.print(u.getName()); System.out.println(u.getAge()); }
条件查询
<select id="seleteByName" resultType="com.cc.User" parameterType="String"> select * from tb_userinfo where name = #{name} </select>
User user = sqlSession.selectOne("seleteByName", "李思思"); System.out.println(user.getGender()); System.out.println(user.getAddress());
模糊查询
<select id="seleteLike" resultType="com.cc.User" parameterType="String"> select * from tb_userinfo where name like #{name} </select>
User o = sqlSession.selectOne("seleteLike", "%大%"); System.out.println(o.getName());
映射文件的相关补充
#{}与${}
#{}与${}都能够接收输入的参数,区别是#{}表示一个占位符号,${}表示一个拼接符号,这样会导致sql注入,因此不建议使用${}
parameterType和resultType
parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。
到此这篇关于Mybatis中sql映射文件中的增删查改的文章就介绍到这了,更多相关Mybatis sql映射文件增删查改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!