简单使用MyBatis增删查改
准备:
核心配置文件:sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//resource.mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置开发环境,可以配置多个,在具体用时再做切换 --> <environments default="development"> <environment id="development"> <!-- 事务管理类型:JDBC、MANAGED --> <transactionManager type="JDBC"></transactionManager> <!-- 数据源类型:POOLED、UNPOOLED、JNDI --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value=""></property> </dataSource> </environment> </environments> <!--告诉mybatis需要引入哪些Mapper映射文件--> <mappers> <mapper resource="cn/hd/pojo/UserMapper.xml"></mapper> </mappers> </configuration>
映射文件:UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper> </mapper>
实体类:User
package cn.hd.pojo;
public class User {
private Integerid;
private Stringname;
private Stringsex;
private Stringaddress;
private Integerbalance;
public User(){
}
public User(Integerid, String name, String sex, String address, Integer balance) {
this.id = id;
this.name = name;
this.sex = sex;
this.address = address;
this.balance = balance;
}
public IntegergetId() {
returnid;
}
publicvoid setId(Integer id) {
this.id = id;
}
public StringgetName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public StringgetSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
public StringgetAddress() {
returnaddress;
}
publicvoid setAddress(String address) {
this.address = address;
}
public IntegergetBalance() {
returnbalance;
}
publicvoid setBalance(Integer balance) {
this.balance = balance;
}
@Override
publicString toString() {
return"User{" +
"id=" + id+
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
", balance=" + balance +
'}';
}
}
测试类:Demo
数据库:mybatis01
数据库表:user
一、通过id查找一个用户
映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <!--通过id查找一个用户--> <select id="findUserById" parameterType="int" resultType="cn.hd.pojo. User" > SELECT * FROM user WHERE id = #{id} </select>
</mapper>
测试代码:
public class Demo { /** * 通过id查找一个用户 * @throws IOException */ @Test public void fun() throws IOException { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sessionFactory.openSession(); User user = session.selectOne("test.findUserById", 1); System.out.println(user); session.close(); }
}
测试结果:
二、通过名字模糊查询用户
映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <!--通过名字模糊查找用户--> <select id="findByName" parameterType="String" resultType="cn.hd.pojo.User"> SELECT * FROM user WHERE name like #{name} </select> </mapper>
测试代码:
public class Demo { /** * 通过名字模糊查找用户 * @throws IOException */ @Test public void fun1() throws IOException { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sessionFactory.openSession(); List<User> list = session.selectList("test.findByName", "%尔%"); System.out.println(list); session.close(); } }
测试结果:
[User{id=1, name='普尔', sex='男', address='苏州', balance=1000},
User{id=3, name='哈塞尔', sex='男', address='上海', balance=1000},
User{id=4, name='奎尔', sex='女', address='北京', balance=10000}]
三、添加一个用户
映射文件:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test">
<!--通过id删除用户--> <delete id="deleteUserById" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete>
</mapper>
测试代码:
@Test public void fun() throws IOException { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sessionFactory.openSession(); int delete = session.delete("test.deleteUserById", 2); session.commit(); System.out.println(delete); session.close(); }
测试结果:
四、通过id删除用户映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <!--通过id删除用户--> <delete id="deleteUserById" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper>测试代码:
public class Demo { /** *通过id删除用户 * @throws IOException */ @Test public void fun3() throws IOException { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sessionFactory.openSession(); int row = session.delete("test.deleteUserById", 13); session.commit(); System.out.println(row); session.close(); } }
测试结果:
五、通过id修改用户
映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//resource.mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="test"> <!--通过id修改用户--> <update id="updateUserById" parameterType="cn.hd.pojo.User"> UPDATE user SET name = #{name},sex = #{sex},address = #{address},balance = #{balance} WHERE id = #{id} </update> </mapper>测试代码:
public class Demo { /** * 通过id修改用户 * @throws IOException */ @Test public void fun4() throws IOException { InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); SqlSession session = sessionFactory.openSession(); User user = new User(); user.setId(14); user.setName("时"); user.setSex("男"); user.setAddress("嘉兴"); user.setBalance(500); int update = session.update("test.updateUserById", user); session.commit(); System.out.println(update); session.close(); } }
测试结果:
注意:增删改,需要提交事务才能持久化到数据库