Mybatis的CRUD操作
好久没写博客了。都快忘了博客怎么写,代码怎么敲了。好了,言归正传。
最近在学习了解Mybatis框架的运用,可以不用写接口的实现类。就可以完成增删改查。觉得挺牛逼的。特来学习。嘻嘻
我用的是mybatis3.2.7和mysql
ps:mybatis3.x之前的版本是ibatis
第一步:创建一个web项目,将mybatis和mysql的jar包导入lib中
第二步:新建一个jdbc.properties文件用来存放数据库连接相关属性
第三步:创建一个Configuration.xml配置文件,先用来配置jdbc,后期用mapper来配置实体类的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> <!--加入数据库配置--> <properties resource="JDBC.properties" /> <typeAliases> <!--用来配置实体类的别名--> <typeAlias type="com.bestlink.bean.User" alias="User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/bestlink/bean/User.xml" /> </mappers> </configuration>
第四步:写User.java的实体类
package com.bestlink.bean; public class User { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [age=" + age + ", id=" + id + ", name=" + name + "]"; } }
第五步:写User.xml文件,用来操作User的增删改查。其中namespace是用来对应User的接口UserDao的。必须一致
<?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 必须和定义的接口UserDao一致--> <mapper namespace="com.bestlink.dao.UserDao"> <!-- 查询所有的数据 返回值是User类型 id是和接口中的方法一致 --> <select id="getUser" resultType="User"> select * from users </select> <!-- 根据Id来查询 传入值是int类型 返回值是User类型 --> <select id="getUserById" parameterType="int" resultType="User"> select * from users where id=#{id} </select> <!-- 增加 --> <insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into users(name,age) values(#{name},#{age}) </insert> <!-- 删除 --> <delete id="deleteUser" parameterType="int"> delete from users where id=#{id} </delete> <!-- 修改 --> <update id="updateUser" parameterType="User"> update users set name=#{name} where id=#{id} </update> </mapper>
第六步:定义接口UserDao
package com.bestlink.dao; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.bestlink.bean.User; public interface UserDao { // 查询所有数据 public List<User> getUser(); // 根据ID来查询 public User getUserById(int id); // 增加 public void insertUser(User user); // 删除 public void deleteUser(int id); // 修改 public void updateUser(User user); }
第七步:编写SqlSessionFactory和SqlSession,返回SqlSession
package com.bestlink.util; import java.io.IOException; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class JDBC { static SqlSessionFactory sqlSessionFactory = null; static SqlSession sqlSession = null; public static SqlSession getSession() { try { Reader reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); sqlSession = sqlSessionFactory.openSession(true); } catch (IOException e) { e.printStackTrace(); } return sqlSession; } public static void CloseSession() { sqlSession.close(); } }
第八步:编写测试类
package com.bestlink.test; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.bestlink.bean.User; import com.bestlink.dao.UserDao; import com.bestlink.util.JDBC; public class test { static SqlSession session = JDBC.getSession(); static UserDao dao = session.getMapper(UserDao.class); public static void main(String[] args) { System.out.println("查询所有数据:getuser()"); getuser(); System.out.println("根据Id查询数据:getUserById(1)"); // 根据Id查询数据 getUserById(1); System.out.println("插入一条数据:insertUser(User user),并查询所有数据"); User user = new User(); user.setName("测试1"); user.setAge(34); insertUser(user); getuser(); System.out.println("删除一条数据:deleteUser(int id),并查询所有数据"); deleteUser(19); getuser(); System.out.println("修改一条数据:updateUser(User user),并查询所有数据"); user = new User(); user.setName("修改数据"); user.setId(1); updateUser(user); getuser(); } /** * 查询所有数据 */ public static void getuser() { List<User> list = dao.getUser(); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).toString()); } } /** * 根据Id查询数据 * * @param id */ public static void getUserById(int id) { User user = dao.getUserById(id); System.out.println(user); } /** * 插入一条数据 * * @param user */ public static void insertUser(User user) { dao.insertUser(user); } /** * 删除一条数据 * * @param id */ public static void deleteUser(int id) { dao.deleteUser(id); } /** * 修改一条数据 * * @param user */ public static void updateUser(User user) { dao.updateUser(user); } }
最后的最后千万要记得,在数据库中创建一个名为users的数据表,表中有id,name,age。其中id为主键。