mybatis count返回null_Mybatis属性示例-Properties的三种配置方式
生活随笔
收集整理的這篇文章主要介紹了
mybatis count返回null_Mybatis属性示例-Properties的三种配置方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.項目結(jié)構(gòu)
開發(fā)工具:IDEA+Maven
項目結(jié)構(gòu)
2.配置
2.1.Maven配置
Maven配置文件pom.xml,增加Mysql8數(shù)據(jù)庫連接類庫、Mybatis類庫、Log4j2類庫、Base64加解密依賴類庫
<?xml version="1.0" encoding="UTF-8"?> mybatis-configuration-properties org.poiuy1.0-SNAPSHOT4.0.0 mybatis-configuration-properties-code mysql mysql-connector-java 8.0.22org.mybatis mybatis 3.5.5org.apache.logging.log4j log4j-core 2.12.1org.apache.logging.log4j log4j-api 2.12.1commons-codec commons-codec 1.132.2.Mybatis配置文件
Mybatis配置文件mybatis_config.xml,此處主要配置properties、dataSource以及Mapper文件
<?xml version="1.0" encoding="UTF-8"?>2.3..數(shù)據(jù)庫配置
配置文件db.properties,要注意key值與Mybatis配置文件中保持相同
db.driver = com.mysql.cj.jdbc.Driverdb.url = jdbc:mysql://192.168.245.128:9906/poiuy_studydb.username = rootdb.password = xxx3.DAO層開發(fā)
Mapper接口,添加簡單的增刪改查功能
package org.poiuy.mybatis.configuration.properties.code.dao;import org.apache.ibatis.annotations.Param;import org.poiuy.mybatis.configuration.properties.code.domain.MybatisUser;/** * @author Poiuy * @Description */public interface MybatisUserMapper { public int insert(MybatisUser user); public int update(MybatisUser user); public int delete(@Param("id") int id); public MybatisUser selectByName(@Param("username") String username);}對應(yīng)的xml配置文件
<?xml version="1.0" encoding="UTF-8"?> INSERT INTO mybatis_user (username,secure,age,brith,email) VALUE (#{username},#{secure},#{age},#{brith},#{email}); DELETE FROM mybatis_user WHERE id = #{id}; SELECT * FROM mybatis_user WHERE username = #{username} UPDATE mybatis_user SET username = #{username} , secure = #{secure} , age = #{age} , brith = #{brith} , email = #{email} WHERE id = #{id}4.Domain類
MybatisUser對應(yīng)的數(shù)據(jù)庫中的表
package org.poiuy.mybatis.configuration.properties.code.domain;import java.time.LocalDate;/** * @author Poiuy * @Description * CREATE TABLE `mybatis_user` ( * `id` int NOT NULL AUTO_INCREMENT, * `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * `secure` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * `age` int NOT NULL, * `brith` date NOT NULL, * `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * PRIMARY KEY (`id`) * ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 */public class MybatisUser { private int id; private String username; private String secure; private int age; private LocalDate brith; private String email;... 省略get set方法 ...}5.啟動類
讀取配置文件通過mybatis對數(shù)據(jù)庫進行操作
package org.poiuy.mybatis.configuration.properties.value;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.poiuy.mybatis.configuration.properties.value.dao.MybatisUserMapper;import org.poiuy.mybatis.configuration.properties.value.domain.MybatisUser;import java.io.IOException;import java.time.LocalDate;/** * @author Poiuy * @Description */public class Application { private static final Logger logger = LogManager.getLogger(Application.class); public static void main(String[] args) { try { SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis/mybatis_config.xml")); SqlSession session = factory.openSession(); MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); MybatisUser user = new MybatisUser(); user.setUsername("xxx"); user.setSecure("xxx"); user.setAge(x); user.setEmail("1100@qq.com"); user.setBrith(LocalDate.of(1991,03,22)); int count = mybatisUserMapper.insert(user); logger.trace("插入數(shù)量:" + count); user.setEmail("1100@163.com"); count = mybatisUserMapper.update(user); logger.trace("更新數(shù)量:" + count); MybatisUser poi = mybatisUserMapper.selectByName("xxx"); logger.trace(poi.getUsername() + " -- " + poi.getEmail()); count = mybatisUserMapper.delete(poi.getId()); logger.trace("刪除數(shù)量:" + count); } catch (IOException e) { e.printStackTrace(); } }}6.加密方式配置
6.1.增加加密解密類
如果需要對配置文件中的數(shù)據(jù)庫連接進行加密,則可以通過以下方式
添加Base64輔助類,包含加密解密方法
package org.poiuy.mybatis.configuration.properties.code.util.secure;import org.apache.commons.codec.binary.Base64;import java.io.UnsupportedEncodingException;public class Base64Util {/** * 加密 */public static String getBase64(String str) {byte[] b = null; String s = null; try { b = str.getBytes("utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (b != null) { s = new Base64().encodeAsString(b);} return s; } /** * 解密 */public static String getFromBase64(String s) { byte[] b = null; String result = null; if (s != null) { try {b = new Base64().decodeBase64(s);result = new String(b, "utf-8"); } catch (Exception e) { e.printStackTrace(); } } return result; } public static void main(String[] args) {System.out.println(Base64Util.getBase64("root"));System.out.println(Base64Util.getFromBase64("bGxpYW4yMDc="));}}6.2.數(shù)據(jù)庫配置中使用加密后的字符串
然后通過Base64Util輔助類將數(shù)據(jù)庫賬號密碼進行加密,然后填寫到數(shù)據(jù)庫配置文件中
db.driver = com.mysql.cj.jdbc.Driverdb.url = jdbc:mysql://192.168.245.128:9906/poiuy_studydb.username = cm9vdA==db.password = bGxpYW4yMDc=6.3.使用Properties參數(shù)傳遞的方式獲得SqlSession
最后讀取配置文件時對賬號密碼進行解密后生成SqlSessionFactory
package org.poiuy.mybatis.configuration.properties.code.util.mybatis;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.poiuy.mybatis.configuration.properties.code.util.secure.Base64Util;import java.io.IOException;import java.io.InputStreamReader;import java.util.Properties;/** * 對配置進行解密 * 三種配置的優(yōu)先級: * 1.在properties元素體內(nèi)指定的屬性首先被加載 * 2.根據(jù)properties元素中的resource屬性讀取類路徑下的屬性文件,并覆蓋已讀取的同名屬性 * 3.讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性 */public class MybatisPropertiesUtil {private static SqlSessionFactory factory = null;/** * 使用XML文件創(chuàng)建SqlSessionFactory * @Description: TODO */public static SqlSessionFactory getFactory() throws IOException {if(factory == null) {String source = "mybatis/mybatis_config.xml";String db = "db/db.properties";InputStreamReader sourceReader = new InputStreamReader(Resources.getResourceAsStream(source));InputStreamReader dbReader = new InputStreamReader(Resources.getResourceAsStream(db));Properties prop = new Properties();prop.load(dbReader);prop.setProperty("db.username", Base64Util.getFromBase64(prop.getProperty("db.username")));prop.setProperty("db.password", Base64Util.getFromBase64(prop.getProperty("db.password")));//使用程序參數(shù)傳遞factory = new SqlSessionFactoryBuilder().build(sourceReader,prop);return factory;}return factory;}}啟動類中使用MybatisPropertiesUtil獲得SqlSession,在繼續(xù)后續(xù)的邏輯
public class Application { public static void main(String[] args) { try { // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis/mybatis_config.xml")); // SqlSession session = factory.openSession(); // MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); SqlSession session = MybatisPropertiesUtil.getFactory().openSession(); MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); ... } catch (IOException e) { e.printStackTrace(); } }}總結(jié)
以上是生活随笔為你收集整理的mybatis count返回null_Mybatis属性示例-Properties的三种配置方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12c闪回 oracle_Oracle1
- 下一篇: 安川机器人程序还原_安川机器人 程序示例