File -> New -> Modulejava
Maven -> Module SDK -> Nextmysql
Finishsql
导入坐标mybatis
import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public User() { } public User(Integer id, String username, Date birthday, String sex, String address) { this.id = id; this.username = username; this.birthday = birthday; this.sex = sex; this.address = address; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }
import java.io.Serializable; public class QueryVo implements Serializable { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "QueryVo{" + "user=" + user + '}'; } }
public interface UserDao { /** * 查询全部 * @return */ List<User> findAll(); /** * 保存用户 * @param user */ void saveUser(User user); /** * 更新用户 * @param user */ void updateUser(User user); /** * 删除用户 * @param id */ void deleteUser(Integer id); /** * 根据id查询用户 * @param id */ User findById(Integer id); /** * 根据名称模糊查询 * @param username * @return */ List<User> findByUsername(String username); /** * 查询用户的总记录数 * @return */ Integer findTotal(); /** * 根据pojo查询用户 */ List<User> findByQueryVo(QueryVo queryVo); }
<?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> <!-- 环境,能够配置多个,default:指定采用哪一个环境 --> <environments default="development"> <!-- id:environment的惟一标识 --> <environment id="development"> <!-- 事务管理器,JDBC类型的事务管理器 --> <transactionManager type="JDBC"></transactionManager> <!-- 数据源,池类型的数据源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 映射配置文件 --> <mappers> <mapper resource="com/mybatis/dao/UserDao.xml"></mapper> </mappers> </configuration>
<?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"> <mapper namespace="com.mybatis.dao.UserDao"> <!-- 查询全部 --> <select id="findAll" resultType="com.mybatis.domain.User"> SELECT * FROM user </select> <!-- 保存用户 --> <insert id="saveUser" parameterType="com.mybatis.domain.User"> INSERT INTO user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) </insert> <!-- 更新用户 --> <update id="updateUser" parameterType="com.mybatis.domain.User"> UPDATE user SET username = #{username}, birthday = #{birthday}, sex = #{sex}, address = #{address} WHERE id = #{id} </update> <!-- 删除用户 --> <delete id="deleteUser" parameterType="java.lang.Integer"> DELETE FROM user WHERE id = #{id} <!-- 当只有一个参数时,参数名称能够任意 --> </delete> <!-- 根据id查询用户 --> <select id="findById" parameterType="java.lang.Integer" resultType="com.mybatis.domain.User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 根据名称模糊查询 --> <select id="findByUsername" parameterType="java.lang.String" resultType="com.mybatis.domain.User"> SELECT * FROM user WHERE username LIKE #{%username%} </select> <!-- 查询用户的总记录数 --> <select id="findTotal" resultType="java.lang.Integer"> SELECT COUNT(id) FROM user </select> <!-- 根据pojo查询用户 --> <select id="findByQueryVo" parameterType="com.mybatis.domain.QueryVo" resultType="com.mybatis.domain.User"> SELECT * FROM user WHERE username = #{user.username} </select> </mapper>
public class MybatisTest { private InputStream inputStream; private SqlSessionFactoryBuilder sqlSessionFactoryBuilder; private SqlSessionFactory sqlSessionFactory; private SqlSession sqlSession; private UserDao userDao; @Before public void init() throws Exception{ //1. 读取配置文件 this.inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //2. 获取SqlSessionFactoryBuilder this.sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //3. 获取SqlSessionFactory this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream); //4. 获取SqlSession this.sqlSession = sqlSessionFactory.openSession(); //5. 获取接口的代理对象 this.userDao = sqlSession.getMapper(UserDao.class); } @After public void destroy() throws Exception{ //8. 提交事务 sqlSession.commit(); //9. 关闭资源 sqlSession.close(); inputStream.close(); } /** * 查询全部 */ @Test public void testFindAll() throws Exception { List<User> userList = this.userDao.findAll(); for (User user : userList) { System.out.println(user); } } /** * 保存用户 */ @Test public void testSaveUser() throws Exception { //6. 利用代理对象调用接口中的方法 User user = new User(); user.setUsername("找老刘"); user.setBirthday(new Date()); user.setSex("男"); user.setAddress("上海陆家嘴"); this.userDao.saveUser(user); } /** * 更新用户 */ @Test public void testUpdateUser() throws Exception { User user = new User(); user.setId(53); user.setUsername("王五"); user.setBirthday(new Date()); user.setSex("男"); user.setAddress("香格里拉"); userDao.updateUser(user); } /** * 删除用户 */ @Test public void testDeleteUser() throws Exception { userDao.deleteUser(53); } /** * 根据id查询用户 */ @Test public void testFindById() throws Exception { User user = userDao.findById(51); System.out.println(user); } /** * 根据名称模糊查询 */ @Test public void testFindByUsername() throws Exception { List<User> userList = userDao.findByUsername("老王"); for (User user : userList) { System.out.println(user); } } /** * 查询用户的总记录数 */ @Test public void testFindTotal() throws Exception { Integer total = userDao.findTotal(); System.out.println(total); } /** * 根据pojo查询用户 */ @Test public void testFindByQueryVo() throws Exception { User user = new User(); user.setUsername("tom"); QueryVo queryVo = new QueryVo(); queryVo.setUser(user); List<User> userList = userDao.findByQueryVo(queryVo); for (User u : userList) { System.out.println(u); } } }
-- 执行findAll() User{id=41, username='张三', birthday=Wed Mar 27 18:47:08 CST 2019, sex='男', address='北京'} User{id=42, username='李四', birthday=Wed Mar 27 18:47:08 CST 2019, sex='男', address='上海'} User{id=43, username='王五', birthday=Wed Mar 27 18:47:08 CST 2019, sex='男', address='广州'}