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='廣州'}